mirror of https://github.com/keeweb/keeweb
simplify script
parent
595142b0ae
commit
c4a9c867f1
|
@ -1,82 +0,0 @@
|
|||
!insertmacro MUI_PAGE_WELCOME
|
||||
#!insertmacro MULTIUSER_PAGE_INSTALLMODE
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
|
||||
Function .onInit
|
||||
${If} ${RunningX64}
|
||||
${If} ${arch} == "x64"
|
||||
SetRegView 64
|
||||
StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}"
|
||||
${Else}
|
||||
MessageBox MB_ICONSTOP|MB_OK "Please use 64-bit installer on 64-bit system"
|
||||
Quit
|
||||
${EndIf}
|
||||
${Else}
|
||||
${If} ${arch} == "x64"
|
||||
MessageBox MB_ICONSTOP|MB_OK "Please use 32-bit installer on 32-bit system"
|
||||
Quit
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
|
||||
${IfNot} ${AtLeastWin7}
|
||||
MessageBox MB_ICONSTOP|MB_OK "Windows 7 and above required"
|
||||
Quit
|
||||
${EndIf}
|
||||
|
||||
System::Call 'kernel32::CreateMutex(i 0, i 0, t "KeeWeb-Installer-Mutex-8843DCD0") ?e'
|
||||
Pop $R0
|
||||
${If} $R0 != 0
|
||||
MessageBox MB_ICONSTOP|MB_OK "The installer is already running."
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
!insertmacro MULTIUSER_INIT
|
||||
FunctionEnd
|
||||
|
||||
Section "MainSection" SEC01
|
||||
!insertmacro EnsureAppIsNotRunning
|
||||
|
||||
SetOverwrite on
|
||||
|
||||
ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
|
||||
${If} $R0 != ""
|
||||
CopyFiles "$R0" "$TEMP\${PRODUCT_UNINST_TEMP_EXE}"
|
||||
ExecWait '"$TEMP\${PRODUCT_UNINST_TEMP_EXE}" /S'
|
||||
${EndIf}
|
||||
|
||||
ReadRegStr $R0 "HKCU" "${PRODUCT_UNINST_KEY}" "QuietUninstallString"
|
||||
${If} $R0 != ""
|
||||
ExecWait '$R0'
|
||||
${EndIf}
|
||||
|
||||
ReadRegStr $R0 "HKCU" "${PRODUCT_UNINST_KEY}" "UninstallString"
|
||||
${If} $R0 != ""
|
||||
ExecWait '$R0'
|
||||
${EndIf}
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
SetOverwrite on
|
||||
File /r "tmp\desktop\KeeWeb-win32-${arch}\*"
|
||||
CreateDirectory "$SMPROGRAMS\KeeWeb"
|
||||
CreateShortCut "$SMPROGRAMS\KeeWeb\KeeWeb.lnk" "$INSTDIR\${PRODUCT_EXE}"
|
||||
CreateShortCut "$DESKTOP\KeeWeb.lnk" "$INSTDIR\${PRODUCT_EXE}"
|
||||
|
||||
!insertmacro APP_ASSOCIATE "kdbx" "kdbxfile" "KeePass Password Database" \
|
||||
"$INSTDIR\${PRODUCT_EXE},0" "Open with KeeWeb" "$INSTDIR\${PRODUCT_EXE} $\"%1$\""
|
||||
!insertmacro UPDATEFILEASSOC
|
||||
SectionEnd
|
||||
|
||||
Section -Post
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" '"$INSTDIR\uninst.exe"'
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "QuietUninstallString" '"$INSTDIR\uninst.exe" /S'
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXE}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallDir" "$INSTDIR"
|
||||
SectionEnd
|
|
@ -2,3 +2,82 @@
|
|||
!include package\nsis\includes.nsh
|
||||
!include package\nsis\check-running.nsh
|
||||
!include package\nsis\uninstall.nsh
|
||||
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
|
||||
Function .onInit
|
||||
${If} ${RunningX64}
|
||||
SetRegView 64
|
||||
StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}"
|
||||
${EndIf}
|
||||
|
||||
!insertmacro MULTIUSER_INIT
|
||||
|
||||
${StrStr} $0 "$EXEPATH" "${PRODUCT_UNINST_TEMP_EXE}"
|
||||
${If} $0 == ""
|
||||
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Remove $(^Name) from your computer?" /SD IDYES IDYES yes
|
||||
Abort
|
||||
yes:
|
||||
!insertmacro EnsureAppIsNotRunning
|
||||
|
||||
SetOverwrite on
|
||||
CopyFiles "$EXEPATH" "$TEMP\${PRODUCT_UNINST_TEMP_EXE}"
|
||||
${If} ${Silent}
|
||||
Exec '"$TEMP\${PRODUCT_UNINST_TEMP_EXE}" /S'
|
||||
${Else}
|
||||
Exec '"$TEMP\${PRODUCT_UNINST_TEMP_EXE}"'
|
||||
${EndIf}
|
||||
Quit
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
Function .onInstSuccess
|
||||
HideWindow
|
||||
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK
|
||||
FunctionEnd
|
||||
|
||||
Section "MainSection" SEC01
|
||||
!insertmacro EnsureAppIsNotRunning
|
||||
|
||||
DetailPrint "Removing desktop shortcut"
|
||||
Delete "$DESKTOP\KeeWeb.lnk"
|
||||
DetailPrint "Removing menu shortcut"
|
||||
Delete "$SMPROGRAMS\KeeWeb\KeeWeb.lnk"
|
||||
|
||||
DetailPrint "Removing menu items"
|
||||
RMDir "$SMPROGRAMS\KeeWeb"
|
||||
|
||||
ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallDir"
|
||||
${If} $R0 == ""
|
||||
DetailPrint "InstallDir key is absent"
|
||||
Abort
|
||||
${EndIf}
|
||||
StrCpy $InstDir "$R0"
|
||||
|
||||
ClearErrors
|
||||
DetailPrint "Removing app files from $InstDir"
|
||||
Var /GLOBAL deleteRetry
|
||||
${ForEach} $deleteRetry 1 3 + 1
|
||||
RMDir /r "$InstDir"
|
||||
${If} ${Errors}
|
||||
ClearErrors
|
||||
DetailPrint "Error removing files, retrying in a second"
|
||||
Sleep 1000
|
||||
${Else}
|
||||
${ExitFor}
|
||||
${EndIf}
|
||||
${Next}
|
||||
|
||||
DetailPrint "Deleting registry keys"
|
||||
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
|
||||
|
||||
DetailPrint "Unregistering file associations"
|
||||
!insertmacro APP_UNASSOCIATE "kdbx" "kdbxfile"
|
||||
DetailPrint "Updating file associations"
|
||||
!insertmacro UPDATEFILEASSOC
|
||||
|
||||
DetailPrint "Done"
|
||||
SetAutoClose true
|
||||
SectionEnd
|
||||
|
|
|
@ -1,4 +1,87 @@
|
|||
!include package\nsis\defines.nsh
|
||||
!include package\nsis\includes.nsh
|
||||
!include package\nsis\defines.nsh
|
||||
!include package\nsis\includes.nsh
|
||||
!include package\nsis\check-running.nsh
|
||||
!include package\nsis\install.nsh
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
#!insertmacro MULTIUSER_PAGE_INSTALLMODE
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
|
||||
Function .onInit
|
||||
${If} ${RunningX64}
|
||||
${If} ${arch} == "x64"
|
||||
SetRegView 64
|
||||
StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}"
|
||||
${Else}
|
||||
MessageBox MB_ICONSTOP|MB_OK "Please use 64-bit installer on 64-bit system"
|
||||
Quit
|
||||
${EndIf}
|
||||
${Else}
|
||||
${If} ${arch} == "x64"
|
||||
MessageBox MB_ICONSTOP|MB_OK "Please use 32-bit installer on 32-bit system"
|
||||
Quit
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
|
||||
${IfNot} ${AtLeastWin7}
|
||||
MessageBox MB_ICONSTOP|MB_OK "Windows 7 and above required"
|
||||
Quit
|
||||
${EndIf}
|
||||
|
||||
System::Call 'kernel32::CreateMutex(i 0, i 0, t "KeeWeb-Installer-Mutex-8843DCD0") ?e'
|
||||
Pop $R0
|
||||
${If} $R0 != 0
|
||||
MessageBox MB_ICONSTOP|MB_OK "The installer is already running."
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
!insertmacro MULTIUSER_INIT
|
||||
FunctionEnd
|
||||
|
||||
Section "MainSection" SEC01
|
||||
!insertmacro EnsureAppIsNotRunning
|
||||
|
||||
SetOverwrite on
|
||||
|
||||
ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
|
||||
${If} $R0 != ""
|
||||
CopyFiles "$R0" "$TEMP\${PRODUCT_UNINST_TEMP_EXE}"
|
||||
ExecWait '"$TEMP\${PRODUCT_UNINST_TEMP_EXE}" /S'
|
||||
${EndIf}
|
||||
|
||||
ReadRegStr $R0 "HKCU" "${PRODUCT_UNINST_KEY}" "QuietUninstallString"
|
||||
${If} $R0 != ""
|
||||
ExecWait '$R0'
|
||||
${EndIf}
|
||||
|
||||
ReadRegStr $R0 "HKCU" "${PRODUCT_UNINST_KEY}" "UninstallString"
|
||||
${If} $R0 != ""
|
||||
ExecWait '$R0'
|
||||
${EndIf}
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
SetOverwrite on
|
||||
File /r "tmp\desktop\KeeWeb-win32-${arch}\*"
|
||||
CreateDirectory "$SMPROGRAMS\KeeWeb"
|
||||
CreateShortCut "$SMPROGRAMS\KeeWeb\KeeWeb.lnk" "$INSTDIR\${PRODUCT_EXE}"
|
||||
CreateShortCut "$DESKTOP\KeeWeb.lnk" "$INSTDIR\${PRODUCT_EXE}"
|
||||
|
||||
!insertmacro APP_ASSOCIATE "kdbx" "kdbxfile" "KeePass Password Database" \
|
||||
"$INSTDIR\${PRODUCT_EXE},0" "Open with KeeWeb" "$INSTDIR\${PRODUCT_EXE} $\"%1$\""
|
||||
!insertmacro UPDATEFILEASSOC
|
||||
SectionEnd
|
||||
|
||||
Section -Post
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" '"$INSTDIR\uninst.exe"'
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "QuietUninstallString" '"$INSTDIR\uninst.exe" /S'
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXE}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallDir" "$INSTDIR"
|
||||
SectionEnd
|
||||
|
|
|
@ -1,78 +0,0 @@
|
|||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
|
||||
Function .onInit
|
||||
${If} ${RunningX64}
|
||||
SetRegView 64
|
||||
StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}"
|
||||
${EndIf}
|
||||
|
||||
!insertmacro MULTIUSER_INIT
|
||||
|
||||
${StrStr} $0 "$EXEPATH" "${PRODUCT_UNINST_TEMP_EXE}"
|
||||
${If} $0 == ""
|
||||
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Remove $(^Name) from your computer?" /SD IDYES IDYES yes
|
||||
Abort
|
||||
yes:
|
||||
!insertmacro EnsureAppIsNotRunning
|
||||
|
||||
SetOverwrite on
|
||||
CopyFiles "$EXEPATH" "$TEMP\${PRODUCT_UNINST_TEMP_EXE}"
|
||||
${If} ${Silent}
|
||||
Exec '"$TEMP\${PRODUCT_UNINST_TEMP_EXE}" /S'
|
||||
${Else}
|
||||
Exec '"$TEMP\${PRODUCT_UNINST_TEMP_EXE}"'
|
||||
${EndIf}
|
||||
Quit
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
Function .onInstSuccess
|
||||
HideWindow
|
||||
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK
|
||||
FunctionEnd
|
||||
|
||||
Section "MainSection" SEC01
|
||||
!insertmacro EnsureAppIsNotRunning
|
||||
|
||||
DetailPrint "Removing desktop shortcut"
|
||||
Delete "$DESKTOP\KeeWeb.lnk"
|
||||
DetailPrint "Removing menu shortcut"
|
||||
Delete "$SMPROGRAMS\KeeWeb\KeeWeb.lnk"
|
||||
|
||||
DetailPrint "Removing menu items"
|
||||
RMDir "$SMPROGRAMS\KeeWeb"
|
||||
|
||||
ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallDir"
|
||||
${If} $R0 == ""
|
||||
DetailPrint "InstallDir key is absent"
|
||||
Abort
|
||||
${EndIf}
|
||||
StrCpy $InstDir "$R0"
|
||||
|
||||
ClearErrors
|
||||
DetailPrint "Removing app files from $InstDir"
|
||||
Var /GLOBAL deleteRetry
|
||||
${ForEach} $deleteRetry 1 3 + 1
|
||||
RMDir /r "$InstDir"
|
||||
${If} ${Errors}
|
||||
ClearErrors
|
||||
DetailPrint "Error removing files, retrying in a second"
|
||||
Sleep 1000
|
||||
${Else}
|
||||
${ExitFor}
|
||||
${EndIf}
|
||||
${Next}
|
||||
|
||||
DetailPrint "Deleting registry keys"
|
||||
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
|
||||
|
||||
DetailPrint "Unregistering file associations"
|
||||
!insertmacro APP_UNASSOCIATE "kdbx" "kdbxfile"
|
||||
DetailPrint "Updating file associations"
|
||||
!insertmacro UPDATEFILEASSOC
|
||||
|
||||
DetailPrint "Done"
|
||||
SetAutoClose true
|
||||
SectionEnd
|
Loading…
Reference in New Issue