This commit is contained in:
+25
-12
@@ -23,21 +23,34 @@ Or download `install.ps1` from the [latest release](https://git.ssh.surf/snxrave
|
||||
### macOS / Linux (`install.sh`)
|
||||
|
||||
1. Detects your OS and architecture (`darwin`/`linux`, `x64`/`arm64`)
|
||||
2. Kills any running `holesail-browser-host` process
|
||||
3. Removes any previous installation (`~/.holesail-browser/`) and old native messaging manifests
|
||||
4. Downloads `holesail-browser-host-<platform>-<arch>.zip` from the latest release
|
||||
5. Extracts the binary to `~/.holesail-browser/holesail-browser-host`
|
||||
6. **macOS only:** removes Gatekeeper quarantine, ad-hoc signs the binary, pre-runs it to extract `.bare` native addons, then signs all extracted addons
|
||||
7. Downloads `Holesail-Browser-1.0.0.zip` and `Holesail-Browser-1.0.0.xpi` to `~/Downloads`
|
||||
8. Writes the native messaging manifest to all browser locations
|
||||
2. **Preserves existing user data** — if a previous installation is found, `holesail-browser-storage/` (state, settings, backups) and `holesail-browser-certs/` (CA key and certificates) are copied to a temporary location before anything is removed
|
||||
3. Kills any running `holesail-browser-host` process
|
||||
4. Removes the previous installation directory and old native messaging manifests
|
||||
5. Downloads `holesail-browser-host-<platform>-<arch>.zip` from the latest release
|
||||
6. Extracts the binary to `~/.holesail-browser/holesail-browser-host`
|
||||
7. **Restores user data** — the preserved storage and certs directories are copied back, so all tunnels, connections, settings, and certificates survive the upgrade
|
||||
8. **macOS only:** removes Gatekeeper quarantine, ad-hoc signs the binary, pre-runs it to extract `.bare` native addons, then signs all extracted addons
|
||||
9. Downloads `Holesail-Browser-1.0.0.zip` and `Holesail-Browser-1.0.0.xpi` to `~/Downloads`
|
||||
10. Writes the native messaging manifest to all browser locations
|
||||
|
||||
### Windows (`install.ps1`)
|
||||
|
||||
1. Kills any running `holesail-browser-host.exe` process
|
||||
2. Removes any previous installation (`%LOCALAPPDATA%\holesail-browser\`) and old registry keys
|
||||
3. Downloads `holesail-browser-host-win32-x64.zip` and extracts the `.exe`
|
||||
4. Downloads `Holesail-Browser-1.0.0.zip` to `~/Downloads`
|
||||
5. Writes the native messaging manifest JSON and creates registry keys for Chrome, Chromium, and Firefox
|
||||
1. **Preserves existing user data** — if a previous installation is found, `holesail-browser-storage\` and `holesail-browser-certs\` are copied to a temporary location in `%TEMP%`
|
||||
2. Kills any running `holesail-browser-host.exe` process
|
||||
3. Removes the previous installation directory and old registry keys
|
||||
4. Downloads `holesail-browser-host-win32-x64.zip` and extracts the `.exe`
|
||||
5. **Restores user data** — the preserved directories are copied back into the new installation
|
||||
6. Downloads `Holesail-Browser-1.0.0.zip` to `~/Downloads`
|
||||
7. Writes the native messaging manifest JSON and creates registry keys for Chrome, Chromium, and Firefox
|
||||
|
||||
### What is preserved across upgrades
|
||||
|
||||
| Directory | Contents |
|
||||
|-----------|----------|
|
||||
| `holesail-browser-storage/` | `state.json` (all virtual hosts, tunnels, SSH/RDP connections, settings), backup archives |
|
||||
| `holesail-browser-certs/` | Root CA key and certificate, wildcard `*.hole.sail` domain cert |
|
||||
|
||||
The binary itself is always replaced with the new version. If this is a fresh install (no previous `~/.holesail-browser/` directory), the preserve/restore steps are skipped.
|
||||
|
||||
---
|
||||
|
||||
|
||||
+37
-1
@@ -19,7 +19,29 @@ Write-Host "==========================" -ForegroundColor Cyan
|
||||
Write-Host "Install : $InstallDir"
|
||||
Write-Host ""
|
||||
|
||||
# ── Uninstall any previous install ────────────────────────────────────────────
|
||||
# ── Preserve user data from any previous installation ─────────────────────────
|
||||
$StashDir = Join-Path $env:TEMP "holesail-browser-stash-$([System.Guid]::NewGuid().ToString('N'))"
|
||||
$StashStorage = Join-Path $StashDir "holesail-browser-storage"
|
||||
$StashCerts = Join-Path $StashDir "holesail-browser-certs"
|
||||
$HadPrevious = $false
|
||||
|
||||
if (Test-Path $InstallDir) {
|
||||
Write-Host "Preserving existing settings and certificates..."
|
||||
New-Item -ItemType Directory -Path $StashDir -Force | Out-Null
|
||||
$StorageSrc = Join-Path $InstallDir "holesail-browser-storage"
|
||||
$CertsSrc = Join-Path $InstallDir "holesail-browser-certs"
|
||||
if (Test-Path $StorageSrc) {
|
||||
Copy-Item $StorageSrc $StashStorage -Recurse -Force
|
||||
Write-Host " Saved: holesail-browser-storage"
|
||||
}
|
||||
if (Test-Path $CertsSrc) {
|
||||
Copy-Item $CertsSrc $StashCerts -Recurse -Force
|
||||
Write-Host " Saved: holesail-browser-certs"
|
||||
}
|
||||
$HadPrevious = $true
|
||||
}
|
||||
|
||||
# ── Stop any running instance ──────────────────────────────────────────────────
|
||||
Write-Host "Removing any previous installation..."
|
||||
Get-Process | Where-Object { $_.Path -like "*holesail-browser-host*" } | Stop-Process -Force -ErrorAction SilentlyContinue
|
||||
if (Test-Path $InstallDir) { Remove-Item $InstallDir -Recurse -Force }
|
||||
@@ -51,6 +73,20 @@ if (-not $HostBin) {
|
||||
}
|
||||
Write-Host " Binary: $HostBin"
|
||||
|
||||
# ── Restore preserved user data ────────────────────────────────────────────────
|
||||
if ($HadPrevious) {
|
||||
Write-Host "Restoring settings and certificates..."
|
||||
if (Test-Path $StashStorage) {
|
||||
Copy-Item $StashStorage (Join-Path $InstallDir "holesail-browser-storage") -Recurse -Force
|
||||
Write-Host " Restored: holesail-browser-storage"
|
||||
}
|
||||
if (Test-Path $StashCerts) {
|
||||
Copy-Item $StashCerts (Join-Path $InstallDir "holesail-browser-certs") -Recurse -Force
|
||||
Write-Host " Restored: holesail-browser-certs"
|
||||
}
|
||||
Remove-Item $StashDir -Recurse -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
Write-Host "Downloading extension..."
|
||||
Invoke-WebRequest "$ReleaseBase/$ExtZip" -OutFile "$Downloads\$ExtZip"
|
||||
Write-Host " Saved: $Downloads\$ExtZip"
|
||||
|
||||
+30
-1
@@ -34,7 +34,24 @@ echo "Platform : ${PLATFORM}-${ARCH}"
|
||||
echo "Install : ${INSTALL_DIR}"
|
||||
echo ""
|
||||
|
||||
# ── Uninstall any previous local/source install ────────────────────────────────
|
||||
# ── Preserve user data from any previous installation ─────────────────────────
|
||||
STASH_DIR="$(mktemp -d)"
|
||||
STASH_STORAGE="${STASH_DIR}/holesail-browser-storage"
|
||||
STASH_CERTS="${STASH_DIR}/holesail-browser-certs"
|
||||
HAD_PREVIOUS=false
|
||||
|
||||
if [[ -d "$INSTALL_DIR" ]]; then
|
||||
echo "Preserving existing settings and certificates..."
|
||||
[[ -d "${INSTALL_DIR}/holesail-browser-storage" ]] && \
|
||||
cp -a "${INSTALL_DIR}/holesail-browser-storage" "$STASH_STORAGE" && \
|
||||
echo " Saved: holesail-browser-storage"
|
||||
[[ -d "${INSTALL_DIR}/holesail-browser-certs" ]] && \
|
||||
cp -a "${INSTALL_DIR}/holesail-browser-certs" "$STASH_CERTS" && \
|
||||
echo " Saved: holesail-browser-certs"
|
||||
HAD_PREVIOUS=true
|
||||
fi
|
||||
|
||||
# ── Stop any running instance ──────────────────────────────────────────────────
|
||||
echo "Removing any previous installation..."
|
||||
pkill -f "holesail-browser/native-host/index.mjs" 2>/dev/null || true
|
||||
pkill -f "holesail-browser-host" 2>/dev/null || true
|
||||
@@ -67,6 +84,18 @@ if [[ -z "$HOST_BIN" ]]; then
|
||||
fi
|
||||
chmod +x "$HOST_BIN"
|
||||
|
||||
# ── Restore preserved user data ────────────────────────────────────────────────
|
||||
if [[ "$HAD_PREVIOUS" == "true" ]]; then
|
||||
echo "Restoring settings and certificates..."
|
||||
[[ -d "$STASH_STORAGE" ]] && \
|
||||
cp -a "$STASH_STORAGE" "${INSTALL_DIR}/holesail-browser-storage" && \
|
||||
echo " Restored: holesail-browser-storage"
|
||||
[[ -d "$STASH_CERTS" ]] && \
|
||||
cp -a "$STASH_CERTS" "${INSTALL_DIR}/holesail-browser-certs" && \
|
||||
echo " Restored: holesail-browser-certs"
|
||||
fi
|
||||
rm -rf "$STASH_DIR"
|
||||
|
||||
# On macOS: remove quarantine and ad-hoc sign so Gatekeeper doesn't block
|
||||
# the binary or the .bare native addons it extracts to $TMPDIR at runtime.
|
||||
if [[ "$PLATFORM" == "darwin" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user