diff options
Diffstat (limited to 'desktop/install/onionshare.nsi')
-rw-r--r-- | desktop/install/onionshare.nsi | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/desktop/install/onionshare.nsi b/desktop/install/onionshare.nsi new file mode 100644 index 00000000..21ac0baa --- /dev/null +++ b/desktop/install/onionshare.nsi @@ -0,0 +1,111 @@ +!define APPNAME "OnionShare" +!define BINPATH "..\dist\onionshare" +!define ABOUTURL "https:\\onionshare.org\" + +# change these with each release +!define INSTALLSIZE 132423 +!define VERSIONMAJOR 2 +!define VERSIONMINOR 3 +!define VERSIONSTRING "2.3.dev1" + +RequestExecutionLevel admin + +Name "OnionShare" +InstallDir "$PROGRAMFILES\${APPNAME}" +Icon "onionshare.ico" + +!include LogicLib.nsh + +Page directory +Page instfiles + +!macro VerifyUserIsAdmin +UserInfo::GetAccountType +pop $0 +${If} $0 != "admin" ;Require admin rights on NT4+ + messageBox mb_iconstop "Administrator rights required!" + setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED + quit +${EndIf} +!macroend + +# in order to code sign uninstall.exe, we need to do some hacky stuff outlined +# here: http:\\nsis.sourceforge.net\Signing_an_Uninstaller +!ifdef INNER + !echo "Creating uninstall.exe" + OutFile "$%TEMP%\tempinstaller.exe" + SetCompress off +!else + !echo "Creating normal installer" + !system "makensis.exe /DINNER onionshare.nsi" = 0 + !system "$%TEMP%\tempinstaller.exe" = 2 + !system "signtool.exe sign /v /d $\"Uninstall OnionShare$\" /a /tr http://time.certum.pl/ $%TEMP%\uninstall.exe" = 0 + + # all done, now we can build the real installer + OutFile "..\dist\onionshare-setup.exe" + SetCompressor /FINAL /SOLID lzma +!endif + +Function .onInit + !ifdef INNER + WriteUninstaller "$%TEMP%\uninstall.exe" + Quit # bail out early + !endif + + setShellVarContext all + !insertmacro VerifyUserIsAdmin +FunctionEnd + +Section "install" + SetOutPath "$INSTDIR" + File "onionshare.ico" + File /a /r "${BINPATH}\" + + # uninstaller + !ifndef INNER + SetOutPath $INSTDIR + File $%TEMP%\uninstall.exe + !endif + + # start menu + CreateShortCut "$SMPROGRAMS\${APPNAME}.lnk" "$INSTDIR\onionshare-gui.exe" "" "$INSTDIR\onionshare.ico" + + # registry information for add\remove programs + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" \S" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "InstallLocation" "$\"$INSTDIR$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$\"$INSTDIR\onionshare.ico$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" ${VERSIONSTRING} + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "VersionMajor" ${VERSIONMAJOR} + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "VersionMinor" ${VERSIONMINOR} + # there is no option for modifying or repairing the install + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" 1 + # set the INSTALLSIZE constant (!defined at the top of this script) so Add\Remove Programs can accurately report the size + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "EstimatedSize" ${INSTALLSIZE} +SectionEnd + +# uninstaller +Function un.onInit + SetShellVarContext all + + #Verify the uninstaller - last chance to back out + MessageBox MB_OKCANCEL "Uninstall ${APPNAME}?" IDOK next + Abort + next: + !insertmacro VerifyUserIsAdmin +FunctionEnd + +!ifdef INNER + Section "uninstall" + Delete "$SMPROGRAMS\${APPNAME}.lnk" + + # remove files + RMDir /r $INSTDIR + + # remove uninstaller information from the registry + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" + SectionEnd +!endif |