simplify script

This commit is contained in:
antelle 2016-07-22 22:41:17 +03:00
parent 595142b0ae
commit c4a9c867f1
4 changed files with 164 additions and 162 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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