fixes to instellers
diff --git a/install-latest b/install-latest
index d6f1bbf..727f759 100644
--- a/install-latest
+++ b/install-latest
@@ -65,18 +65,27 @@
 if test -z "$VERSION"
 then VERSION="$(curl -sL $OPSROOT | sed -n 's/^.*"version": "\([^"]*\)",/\1/p')"
 fi
+if test -z "$VERSION"
+then echo "cannot determine version from $OPSROOT - exiting"
+     exit 1
+fi
 FILE="openserverless-cli_${VERSION}$SUFFIX$EXT"
 URL="https://github.com/apache/openserverless-cli/releases/download/v$VERSION/$FILE"
 
 mkdir -p ~/.local/bin
-curl -sL "$URL" -o "/tmp/$FILE"
+if ! curl -fsSL "$URL" -o "/tmp/$FILE"
+then echo "cannot download ops from:"
+     echo "$URL"
+     exit 1
+fi
 
-if test "$EXT" == ".zip"
+if test "$EXT" = ".zip"
 then
    unzip -o -d ~/.local/bin "/tmp/$FILE" "$CMD"
 else
    tar xzvf "/tmp/$FILE" -C ~/.local/bin "$CMD"
 fi
+rm -f "/tmp/$FILE"
 
 if ! test -e  ~/.local/bin/"$CMD"
 then echo "cannot install ops - download and unpack it in a folder in the path from here:"
@@ -84,15 +93,24 @@
      exit 1
 fi
 
-if ! which ops | grep $HOME/.local/bin
-then
-  echo "$HOME/.local/bin is not in the path - adding it"
-  echo 'export PATH="$HOME/.local/bin:$PATH"' >>$HOME/.bashrc
-  echo 'export PATH="$HOME/.local/bin:$PATH"' >>$HOME/.zshrc
-  echo please restart your terminal to find ops in your path
-fi
+case ":$PATH:" in
+(*":$HOME/.local/bin:"*)
+   : # already in PATH
+;;
+(*)
+   echo "$HOME/.local/bin is not in the path - adding it"
+   LINE='export PATH="$HOME/.local/bin:$PATH"'
+   for RC in "$HOME/.bashrc" "$HOME/.zshrc"
+   do
+      if ! test -e "$RC" || ! grep -qF "$LINE" "$RC"
+      then echo "$LINE" >>"$RC"
+      fi
+   done
+   echo please restart your terminal to find ops in your path
+;;
+esac
 
-exit $?
+exit 0
 
 # Above this line is Bash Script -------------------------------------------
 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -123,21 +141,23 @@
     New-Item -ItemType Directory -Force -Path $BinPath | Out-Null
 }
 
-# Download the file
-Invoke-WebRequest -Uri $URL -OutFile "$FILE"
+# Download the file to a temp location
+$TmpFile = Join-Path ([System.IO.Path]::GetTempPath()) $FILE
+Invoke-WebRequest -Uri $URL -OutFile "$TmpFile"
 
 # Unpack the file based on its extension
-Expand-Archive -Path "$FILE" -DestinationPath $BinPath -Force
+Expand-Archive -Path "$TmpFile" -DestinationPath $BinPath -Force
+Remove-Item -Path "$TmpFile" -Force -ErrorAction SilentlyContinue
 
 # Verify installation
-if (-not (Test-Path "$BinPath/$CMD*")) {
+if (-not (Test-Path "$BinPath/$CMD")) {
    Write-Host "Cannot install ops - download and unpack it in a folder in the path from here:"
    Write-Host $URL
    exit 1
 }
 
 # Check if the bin path is in the user's PATH
-if (-not ($env:PATH -contains $BinPath)) {
+if (-not ($env:PATH -split ';' -contains $BinPath)) {
    $existingPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
    $newPath = "$BinPath;$existingPath"
    [System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::User)
diff --git a/install-latest.sh b/install-latest.sh
deleted file mode 100644
index 8a69c68..0000000
--- a/install-latest.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-
-if jq --version >/dev/null
-then 
-    LATEST=https://api.github.com/repos/apache/openserverless-cli/releases/latest
-    VERSION=$(curl -s  "$LATEST" | jq -r '.name | .[1:]')
-    curl -sL bit.ly/get-ops | VERSION=$VERSION bash
-else 
-    echo "Sorry for the annoyance, but I need jq installed to run..."
-fi
\ No newline at end of file
diff --git a/install.ps1 b/install.ps1
index 2f0f2fb..d3865b8 100644
--- a/install.ps1
+++ b/install.ps1
@@ -17,78 +17,56 @@
 
 $InWindows = [System.Environment]::OSVersion.Platform -eq 'Win32NT'
 
+if (-not $InWindows) {
+    Write-Host "This script is only for Windows - exiting"
+    exit 1
+}
+
 $SUFFIX = "_windows_amd64"
 $EXT = ".zip"
 $CMD = "ops.exe"
 
-if (-not $InWindows) {
-    $OS = (uname -s)
-    $ARCH = (uname -m)
-    $CMD = "ops"
-    switch ("$OS-$ARCH") {
-        "Linux-x86_64" {
-            $SUFFIX = "_linux_amd64"
-            $EXT = ".tar.gz"
-        }
-        "Linux-arm64" {
-            $SUFFIX = "_linux_arm64"
-            $EXT = ".tar.gz"
-        }
-        "Darwin-x86_64" {
-            $SUFFIX = "_darwin_amd64"
-            $EXT = ".tar.gz"
-        }
-        "Darwin-arm64" {
-            $SUFFIX = "_darwin_arm64"
-            $EXT = ".tar.gz"
-        }
-        default {
-            Write-Host "Unknown system - exiting"
-            exit 1
-        }
-    }
-} 
-
 $OPSROOT = "https://raw.githubusercontent.com/apache/openserverless-task/0.1.0/opsroot.json"
 $VERSION = (Invoke-RestMethod -Uri $OPSROOT).version
+if (-not $VERSION) {
+    Write-Host "Cannot determine version from $OPSROOT - exiting"
+    exit 1
+}
 $FILE = "openserverless-cli_${VERSION}$SUFFIX$EXT"
 $URL = "https://github.com/apache/openserverless-cli/releases/download/v$VERSION/$FILE"
 
 # Create the directory if it doesn't exist
-$BinPath = "$HOME/.local/bin"
+$BinPath = "$HOME\.local\bin"
 if (-not (Test-Path -Path $BinPath)) {
     New-Item -ItemType Directory -Force -Path $BinPath | Out-Null
 }
 
-# Download the file
-Invoke-WebRequest -Uri $URL -OutFile "$FILE"
-
-# Unpack the file based on its extension
-if ($EXT -eq ".zip") {
-    Expand-Archive -Path "$FILE" -DestinationPath $BinPath -Force
-} else {
-    tar -xzvf "$FILE" -C $BinPath $CMD
+# Download the file to a temp location
+$TmpFile = Join-Path ([System.IO.Path]::GetTempPath()) $FILE
+try {
+    Invoke-WebRequest -Uri $URL -OutFile "$TmpFile"
+} catch {
+    Write-Host "Cannot download ops from:"
+    Write-Host $URL
+    exit 1
 }
 
+# Unpack the file
+Expand-Archive -Path "$TmpFile" -DestinationPath $BinPath -Force
+Remove-Item -Path "$TmpFile" -Force -ErrorAction SilentlyContinue
+
 # Verify installation
-if (-not (Test-Path "$BinPath/$CMD*")) {
+if (-not (Test-Path "$BinPath\$CMD")) {
     Write-Host "Cannot install ops - download and unpack it in a folder in the path from here:"
     Write-Host $URL
     exit 1
 }
 
 # Check if the bin path is in the user's PATH
-if (-not ($env:PATH -contains $BinPath)) {
-    if($InWindows) {
-        $existingPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
-            $newPath = "$BinPath;$existingPath"
-            [System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::User)
-            Write-Host "Please restart your terminal to find ops in your path"
-    } else { 
-        Write-Host "$BinPath is not in the PATH - adding it"
-        Add-Content -Path "$HOME\.bashrc" -Value "`nexport PATH=`"$BinPath`:`$PATH`""
-        Add-Content -Path "$HOME\.zshrc" -Value "`nexport PATH=`"$BinPath`:`$PATH`""
-        Write-Host "Please restart your terminal to find ops in your path"
-    }
+if (-not (($env:PATH -split ';') -contains $BinPath)) {
+    $existingPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
+    $newPath = "$BinPath;$existingPath"
+    [System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::User)
+    Write-Host "Please restart your terminal to find ops in your path"
 }
 
diff --git a/install.sh b/install.sh
index d750555..c26d53c 100644
--- a/install.sh
+++ b/install.sh
@@ -57,32 +57,50 @@
 if test -z "$VERSION"
 then VERSION="$(curl -sL $OPSROOT | sed -n 's/^.*"version": "\([^"]*\)",/\1/p')"
 fi
+if test -z "$VERSION"
+then echo "cannot determine version from $OPSROOT - exiting"
+     exit 1
+fi
 FILE="openserverless-cli_${VERSION}$SUFFIX$EXT"
 URL="https://github.com/apache/openserverless-cli/releases/download/v$VERSION/$FILE"
 
 mkdir -p ~/.local/bin
-curl -sL "$URL" -o "/tmp/$FILE"
-
-if test "$EXT" == ".zip"
-then 
-   unzip -o -d ~/.local/bin "/tmp/$FILE" "$CMD"
-else 
-   tar xzvf "/tmp/$FILE" -C ~/.local/bin "$CMD"
+if ! curl -fsSL "$URL" -o "/tmp/$FILE"
+then echo "cannot download ops from:"
+     echo "$URL"
+     exit 1
 fi
 
+if test "$EXT" = ".zip"
+then
+   unzip -o -d ~/.local/bin "/tmp/$FILE" "$CMD"
+else
+   tar xzvf "/tmp/$FILE" -C ~/.local/bin "$CMD"
+fi
+rm -f "/tmp/$FILE"
 
-if ! test -e  ~/.local/bin/ops*
+
+if ! test -e  ~/.local/bin/"$CMD"
 then echo "cannot install ops - download and unpack it in a folder in the path from here:"
      echo "$URL"
      exit 1
 fi
 
-if ! which ops | grep $HOME/.local/bin
-then 
-  echo "$HOME/.local/bin is not in the path - adding it"
-  echo 'export PATH="$HOME/.local/bin:$PATH"' >>$HOME/.bashrc
-  echo 'export PATH="$HOME/.local/bin:$PATH"' >>$HOME/.zshrc
-  echo please restart your terminal to find ops in your path
-fi
+case ":$PATH:" in
+*":$HOME/.local/bin:"*)
+   : # already in PATH
+;;
+*)
+   echo "$HOME/.local/bin is not in the path - adding it"
+   LINE='export PATH="$HOME/.local/bin:$PATH"'
+   for RC in "$HOME/.bashrc" "$HOME/.zshrc"
+   do
+      if ! test -e "$RC" || ! grep -qF "$LINE" "$RC"
+      then echo "$LINE" >>"$RC"
+      fi
+   done
+   echo please restart your terminal to find ops in your path
+;;
+esac
 
 exit 0