aboutsummaryrefslogtreecommitdiff
path: root/desktop/install/onionshare.nsi
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/install/onionshare.nsi')
-rw-r--r--desktop/install/onionshare.nsi111
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