- Added a macro to fix the working directory for shortcuts in the Windows installer, ensuring correct execution context. - Updated shortcut creation logic in `installer.nsh` to utilize the new macro for both desktop and start menu shortcuts. - Implemented a function to patch the native wrapper path in the Electrobun source, improving compatibility with different execution contexts. - Adjusted the `deeplink.js` and `index.js` files to set the current working directory appropriately, enhancing application behavior on Windows. - Introduced a new module for managing window work area constraints, improving window management and user experience on Windows platforms.
98 lines
3.2 KiB
NSIS
98 lines
3.2 KiB
NSIS
!macro quitFarmControl
|
|
DetailPrint "Stopping running Farm Control processes..."
|
|
ExecWait 'taskkill /F /IM launcher.exe /T' $R0
|
|
!macroend
|
|
|
|
!macro uninstallPreviousFarmControl
|
|
ClearErrors
|
|
ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Farm Control" "UninstallString"
|
|
StrCmp $R0 "" check_install_dir run_uninstall
|
|
|
|
check_install_dir:
|
|
ReadRegStr $R0 HKLM "Software\Tom Butcher\Farm Control" "InstallDir"
|
|
StrCmp $R0 "" check_default_dir
|
|
StrCpy $R0 "$R0\Uninstall.exe"
|
|
Goto run_uninstall
|
|
|
|
check_default_dir:
|
|
StrCpy $R0 "$PROGRAMFILES64\Farm Control\Uninstall.exe"
|
|
IfFileExists $R0 run_uninstall done_uninstall
|
|
|
|
run_uninstall:
|
|
IfFileExists $R0 0 done_uninstall
|
|
DetailPrint "Removing previous Farm Control installation..."
|
|
!insertmacro quitFarmControl
|
|
ExecWait '$R0 /S' $R1
|
|
DetailPrint "Previous installation removed (exit code: $R1)"
|
|
|
|
done_uninstall:
|
|
!macroend
|
|
|
|
!macro fixShortcutWorkingDir SHORTCUT_PATH WORKING_DIR
|
|
Push $0
|
|
Push $1
|
|
Push $2
|
|
StrCpy $1 "${SHORTCUT_PATH}"
|
|
StrCpy $2 "${WORKING_DIR}"
|
|
InitPluginsDir
|
|
FileOpen $0 "$PLUGINSDIR\fix-shortcut.ps1" w
|
|
FileWrite $0 '$$s = (New-Object -COM WScript.Shell).CreateShortcut("'
|
|
FileWrite $0 $1
|
|
FileWrite $0 '")$\r$\n'
|
|
FileWrite $0 '$$s.WorkingDirectory = "'
|
|
FileWrite $0 $2
|
|
FileWrite $0 '"$\r$\n'
|
|
FileWrite $0 '$$s.Save()$\r$\n'
|
|
FileClose $0
|
|
ExecWait '"$SYSDIR\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -File "$PLUGINSDIR\fix-shortcut.ps1"'
|
|
Delete "$PLUGINSDIR\fix-shortcut.ps1"
|
|
Pop $2
|
|
Pop $1
|
|
Pop $0
|
|
!macroend
|
|
|
|
!macro createDesktopShortcut
|
|
SetShellVarContext all
|
|
CreateShortCut "$DESKTOP\Farm Control.lnk" "$INSTDIR\bin\launcher.exe" "" "$INSTDIR\bin\launcher.exe" 0 SW_SHOWNORMAL "" "Farm Control"
|
|
!insertmacro fixShortcutWorkingDir "$DESKTOP\Farm Control.lnk" "$INSTDIR\bin"
|
|
!macroend
|
|
|
|
!macro createStartMenuShortcut
|
|
SetShellVarContext all
|
|
CreateDirectory "$SMPROGRAMS\Farm Control"
|
|
CreateShortCut "$SMPROGRAMS\Farm Control\Farm Control.lnk" "$INSTDIR\bin\launcher.exe" "" "$INSTDIR\bin\launcher.exe" 0 SW_SHOWNORMAL "" "Farm Control"
|
|
!insertmacro fixShortcutWorkingDir "$SMPROGRAMS\Farm Control\Farm Control.lnk" "$INSTDIR\bin"
|
|
!macroend
|
|
|
|
!macro removeDesktopShortcut
|
|
SetShellVarContext all
|
|
Delete "$DESKTOP\Farm Control.lnk"
|
|
!macroend
|
|
|
|
!macro removeStartMenuShortcut
|
|
SetShellVarContext all
|
|
Delete "$SMPROGRAMS\Farm Control\Farm Control.lnk"
|
|
RMDir "$SMPROGRAMS\Farm Control"
|
|
!macroend
|
|
|
|
!macro customInstall
|
|
DetailPrint "Register farmcontrol URI Handler"
|
|
DeleteRegKey HKCR "farmcontrol"
|
|
WriteRegStr HKCR "farmcontrol" "" "URL:farmcontrol"
|
|
WriteRegStr HKCR "farmcontrol" "URL Protocol" ""
|
|
WriteRegStr HKCR "farmcontrol\DefaultIcon" "" "$INSTDIR\bin\launcher.exe"
|
|
WriteRegStr HKCR "farmcontrol\shell" "" ""
|
|
WriteRegStr HKCR "farmcontrol\shell\Open" "" ""
|
|
WriteRegStr HKCR "farmcontrol\shell\Open\command" "" '"$INSTDIR\bin\bun.exe" "$INSTDIR\bin\deeplink.js" "%1"'
|
|
|
|
DetailPrint "Creating shortcuts"
|
|
!insertmacro createDesktopShortcut
|
|
!insertmacro createStartMenuShortcut
|
|
!macroend
|
|
|
|
!macro customUnInstall
|
|
!insertmacro removeDesktopShortcut
|
|
!insertmacro removeStartMenuShortcut
|
|
DeleteRegKey HKCR "farmcontrol"
|
|
!macroend
|