Skip to content

Commit

Permalink
Windows installer: Prefer Geany installation directory over user's HOME
Browse files Browse the repository at this point in the history
If no explicit installation directory was specified and an existing,
Geany installation was found, then use its installation directory.

Closes #1321.
  • Loading branch information
eht16 committed Apr 14, 2024
1 parent a8f26ab commit 9c2ea2c
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions build/geany-plugins.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ ManifestSupportedOS all

OutFile "${GEANY_PLUGINS_INSTALLER_NAME}"

Var Answer
Var UserIsAdmin
Var UserName
Var GEANY_INSTDIR
Var UNINSTDIR
Expand Down Expand Up @@ -154,7 +154,7 @@ SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst-plugins.exe"
WriteRegStr SHCTX "${PRODUCT_DIR_REGKEY}" Path "$INSTDIR"
${if} $Answer == "yes" ; if user is admin
${if} $UserIsAdmin == "yes"
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst-plugins.exe"
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\Geany.exe"
Expand Down Expand Up @@ -376,16 +376,13 @@ FunctionEnd
Function .onInit
; (from http://jabref.svn.sourceforge.net/viewvc/jabref/trunk/jabref/src/windows/nsis/setup.nsi)
; If the user does *not* have administrator privileges, abort
StrCpy $Answer ""
StrCpy $UserIsAdmin ""
StrCpy $UserName ""
!insertmacro IsUserAdmin $Answer $UserName ; macro from LyXUtils.nsh
${if} $Answer == "yes"
!insertmacro IsUserAdmin $UserIsAdmin $UserName ; macro from LyXUtils.nsh
${if} $UserIsAdmin == "yes"
SetShellVarContext all ; set that e.g. shortcuts will be created for all users
${else}
SetShellVarContext current
; TODO is this really what we want? $PROGRAMFILES is not much better because
; probably the unprivileged user can't write it anyways
StrCpy $INSTDIR "$PROFILE\$(^Name)"
${endif}

; prevent running multiple instances of the installer
Expand All @@ -401,6 +398,12 @@ Function .onInit
StrCpy $INSTDIR "$GEANY_INSTDIR"
${EndIf}

; if $INSTDIR has not been set yet above, set it to the profile directory for non-admin users
${If} $INSTDIR == ""
${AndIf} $UserIsAdmin != "yes"
StrCpy $INSTDIR "$PROFILE\$(^Name)"
${EndIf}

; warn about a new install over an existing installation
ReadRegStr $R0 SHCTX "${PRODUCT_UNINST_KEY}" "UninstallString"
StrCmp $R0 "" finish
Expand Down Expand Up @@ -431,9 +434,9 @@ FunctionEnd

Function un.onInit
; If the user does *not* have administrator privileges, abort
StrCpy $Answer ""
!insertmacro IsUserAdmin $Answer $UserName
${if} $Answer == "yes"
StrCpy $UserIsAdmin ""
!insertmacro IsUserAdmin $UserIsAdmin $UserName
${if} $UserIsAdmin == "yes"
SetShellVarContext all
${else}
; check if the Geany has been installed with admin permisions
Expand Down

0 comments on commit 9c2ea2c

Please sign in to comment.