onionshare/install/onionshare.nsi
2017-02-22 15:18:57 -08:00

376 lines
17 KiB
Plaintext

!define APPNAME "OnionShare"
!define BINPATH "..\dist\onionshare"
!define ABOUTURL "https:\\onionshare.org\"
# change these with each release
!define INSTALLSIZE 39265
!define VERSIONMAJOR 1
!define VERSIONMINOR 0
!define VERSIONSTRING "1.0.0"
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://timestamp.globalsign.com/scripts/timstamp.dll /fd sha256 $%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 "${BINPATH}\api-ms-win-core-console-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-datetime-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-debug-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-errorhandling-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-file-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-file-l1-2-0.dll"
File "${BINPATH}\api-ms-win-core-file-l2-1-0.dll"
File "${BINPATH}\api-ms-win-core-handle-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-heap-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-interlocked-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-libraryloader-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-localization-l1-2-0.dll"
File "${BINPATH}\api-ms-win-core-memory-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-namedpipe-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-processenvironment-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-processthreads-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-processthreads-l1-1-1.dll"
File "${BINPATH}\api-ms-win-core-profile-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-rtlsupport-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-string-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-synch-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-synch-l1-2-0.dll"
File "${BINPATH}\api-ms-win-core-sysinfo-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-timezone-l1-1-0.dll"
File "${BINPATH}\api-ms-win-core-util-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-conio-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-convert-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-environment-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-filesystem-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-heap-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-locale-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-math-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-multibyte-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-process-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-runtime-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-stdio-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-string-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-time-l1-1-0.dll"
File "${BINPATH}\api-ms-win-crt-utility-l1-1-0.dll"
File "${BINPATH}\base_library.zip"
File "${BINPATH}\MSVCP140.dll"
File "${BINPATH}\MSVCR100.dll"
File "${BINPATH}\onionshare-gui.exe"
File "${BINPATH}\onionshare-gui.exe.manifest"
File "${BINPATH}\pyexpat.pyd"
File "${BINPATH}\PyQt5.Qt.pyd"
File "${BINPATH}\PyQt5.QtCore.pyd"
File "${BINPATH}\PyQt5.QtGui.pyd"
File "${BINPATH}\PyQt5.QtPrintSupport.pyd"
File "${BINPATH}\PyQt5.QtWidgets.pyd"
File "${BINPATH}\python3.dll"
File "${BINPATH}\python35.dll"
File "${BINPATH}\pywintypes35.dll"
File "${BINPATH}\Qt5Core.dll"
File "${BINPATH}\Qt5Gui.dll"
File "${BINPATH}\Qt5PrintSupport.dll"
File "${BINPATH}\Qt5Svg.dll"
File "${BINPATH}\Qt5Widgets.dll"
File "${BINPATH}\select.pyd"
File "${BINPATH}\sip.pyd"
File "${BINPATH}\ucrtbase.dll"
File "${BINPATH}\unicodedata.pyd"
File "${BINPATH}\VCRUNTIME140.dll"
File "${BINPATH}\win32wnet.pyd"
File "${BINPATH}\_bz2.pyd"
File "${BINPATH}\_ctypes.pyd"
File "${BINPATH}\_decimal.pyd"
File "${BINPATH}\_hashlib.pyd"
File "${BINPATH}\_lzma.pyd"
File "${BINPATH}\_multiprocessing.pyd"
File "${BINPATH}\_socket.pyd"
File "${BINPATH}\_ssl.pyd"
SetOutPath "$INSTDIR\Include"
File "${BINPATH}\Include\pyconfig.h"
SetOutPath "$INSTDIR\lib2to3"
File "${BINPATH}\lib2to3\Grammar.txt"
File "${BINPATH}\lib2to3\Grammar3.5.2.final.0.pickle"
File "${BINPATH}\lib2to3\PatternGrammar.txt"
File "${BINPATH}\lib2to3\PatternGrammar3.5.2.final.0.pickle"
SetOutPath "$INSTDIR\share"
File "${BINPATH}\share\license.txt"
File "${BINPATH}\share\version.txt"
File "${BINPATH}\share\wordlist.txt"
SetOutPath "$INSTDIR\share\html"
File "${BINPATH}\share\html\404.html"
File "${BINPATH}\share\html\denied.html"
File "${BINPATH}\share\html\index.html"
SetOutPath "$INSTDIR\share\images"
File "${BINPATH}\share\images\drop_files.png"
File "${BINPATH}\share\images\logo.png"
File "${BINPATH}\share\images\server_started.png"
File "${BINPATH}\share\images\server_stopped.png"
File "${BINPATH}\share\images\server_working.png"
SetOutPath "$INSTDIR\share\locale"
File "${BINPATH}\share\locale\cs.json"
File "${BINPATH}\share\locale\de.json"
File "${BINPATH}\share\locale\en.json"
File "${BINPATH}\share\locale\eo.json"
File "${BINPATH}\share\locale\es.json"
File "${BINPATH}\share\locale\fi.json"
File "${BINPATH}\share\locale\fr.json"
File "${BINPATH}\share\locale\it.json"
File "${BINPATH}\share\locale\nl.json"
File "${BINPATH}\share\locale\no.json"
File "${BINPATH}\share\locale\pt.json"
File "${BINPATH}\share\locale\ru.json"
File "${BINPATH}\share\locale\tr.json"
SetOutPath "$INSTDIR\qt5_plugins\iconengines"
File "${BINPATH}\qt5_plugins\iconengines\qsvgicon.dll"
SetOutPath "$INSTDIR\qt5_plugins\imageformats"
File "${BINPATH}\qt5_plugins\imageformats\qgif.dll"
File "${BINPATH}\qt5_plugins\imageformats\qicns.dll"
File "${BINPATH}\qt5_plugins\imageformats\qico.dll"
File "${BINPATH}\qt5_plugins\imageformats\qjpeg.dll"
File "${BINPATH}\qt5_plugins\imageformats\qsvg.dll"
File "${BINPATH}\qt5_plugins\imageformats\qtga.dll"
File "${BINPATH}\qt5_plugins\imageformats\qtiff.dll"
File "${BINPATH}\qt5_plugins\imageformats\qwbmp.dll"
File "${BINPATH}\qt5_plugins\imageformats\qwebp.dll"
SetOutPath "$INSTDIR\qt5_plugins\platforms"
File "${BINPATH}\qt5_plugins\platforms\qminimal.dll"
File "${BINPATH}\qt5_plugins\platforms\qoffscreen.dll"
File "${BINPATH}\qt5_plugins\platforms\qwindows.dll"
SetOutPath "$INSTDIR\qt5_plugins\printsupport"
File "${BINPATH}\qt5_plugins\printsupport\windowsprintersupport.dll"
# 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
Delete "$INSTDIR\api-ms-win-core-console-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-datetime-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-debug-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-errorhandling-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-file-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-file-l1-2-0.dll"
Delete "$INSTDIR\api-ms-win-core-file-l2-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-handle-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-heap-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-interlocked-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-libraryloader-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-localization-l1-2-0.dll"
Delete "$INSTDIR\api-ms-win-core-memory-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-namedpipe-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-processenvironment-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-processthreads-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-processthreads-l1-1-1.dll"
Delete "$INSTDIR\api-ms-win-core-profile-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-rtlsupport-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-string-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-synch-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-synch-l1-2-0.dll"
Delete "$INSTDIR\api-ms-win-core-sysinfo-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-timezone-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-core-util-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-conio-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-convert-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-environment-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-filesystem-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-heap-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-locale-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-math-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-multibyte-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-process-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-runtime-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-stdio-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-string-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-time-l1-1-0.dll"
Delete "$INSTDIR\api-ms-win-crt-utility-l1-1-0.dll"
Delete "$INSTDIR\base_library.zip"
Delete "$INSTDIR\MSVCP140.dll"
Delete "$INSTDIR\MSVCR100.dll"
Delete "$INSTDIR\onionshare-gui.exe"
Delete "$INSTDIR\onionshare-gui.exe.manifest"
Delete "$INSTDIR\pyexpat.pyd"
Delete "$INSTDIR\PyQt5.Qt.pyd"
Delete "$INSTDIR\PyQt5.QtCore.pyd"
Delete "$INSTDIR\PyQt5.QtGui.pyd"
Delete "$INSTDIR\PyQt5.QtPrintSupport.pyd"
Delete "$INSTDIR\PyQt5.QtWidgets.pyd"
Delete "$INSTDIR\python3.dll"
Delete "$INSTDIR\python35.dll"
Delete "$INSTDIR\pywintypes35.dll"
Delete "$INSTDIR\Qt5Core.dll"
Delete "$INSTDIR\Qt5Gui.dll"
Delete "$INSTDIR\Qt5PrintSupport.dll"
Delete "$INSTDIR\Qt5Svg.dll"
Delete "$INSTDIR\Qt5Widgets.dll"
Delete "$INSTDIR\select.pyd"
Delete "$INSTDIR\sip.pyd"
Delete "$INSTDIR\ucrtbase.dll"
Delete "$INSTDIR\unicodedata.pyd"
Delete "$INSTDIR\VCRUNTIME140.dll"
Delete "$INSTDIR\win32wnet.pyd"
Delete "$INSTDIR\_bz2.pyd"
Delete "$INSTDIR\_ctypes.pyd"
Delete "$INSTDIR\_decimal.pyd"
Delete "$INSTDIR\_hashlib.pyd"
Delete "$INSTDIR\_lzma.pyd"
Delete "$INSTDIR\_multiprocessing.pyd"
Delete "$INSTDIR\_socket.pyd"
Delete "$INSTDIR\_ssl.pyd"
Delete "$INSTDIR\Include\pyconfig.h"
Delete "$INSTDIR\lib2to3\Grammar.txt"
Delete "$INSTDIR\lib2to3\Grammar3.5.2.final.0.pickle"
Delete "$INSTDIR\lib2to3\PatternGrammar.txt"
Delete "$INSTDIR\lib2to3\PatternGrammar3.5.2.final.0.pickle"
Delete "$INSTDIR\share\license.txt"
Delete "$INSTDIR\share\version.txt"
Delete "$INSTDIR\share\wordlist.txt"
Delete "$INSTDIR\share\html\404.html"
Delete "$INSTDIR\share\html\denied.html"
Delete "$INSTDIR\share\html\index.html"
Delete "$INSTDIR\share\images\drop_files.png"
Delete "$INSTDIR\share\images\logo.png"
Delete "$INSTDIR\share\images\server_started.png"
Delete "$INSTDIR\share\images\server_stopped.png"
Delete "$INSTDIR\share\images\server_working.png"
Delete "$INSTDIR\share\locale\cs.json"
Delete "$INSTDIR\share\locale\de.json"
Delete "$INSTDIR\share\locale\en.json"
Delete "$INSTDIR\share\locale\eo.json"
Delete "$INSTDIR\share\locale\es.json"
Delete "$INSTDIR\share\locale\fi.json"
Delete "$INSTDIR\share\locale\fr.json"
Delete "$INSTDIR\share\locale\it.json"
Delete "$INSTDIR\share\locale\nl.json"
Delete "$INSTDIR\share\locale\no.json"
Delete "$INSTDIR\share\locale\pt.json"
Delete "$INSTDIR\share\locale\ru.json"
Delete "$INSTDIR\share\locale\tr.json"
Delete "$INSTDIR\qt5_plugins\iconengines\qsvgicon.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qgif.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qicns.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qico.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qjpeg.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qsvg.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qtga.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qtiff.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qwbmp.dll"
Delete "$INSTDIR\qt5_plugins\imageformats\qwebp.dll"
Delete "$INSTDIR\qt5_plugins\platforms\qminimal.dll"
Delete "$INSTDIR\qt5_plugins\platforms\qoffscreen.dll"
Delete "$INSTDIR\qt5_plugins\platforms\qwindows.dll"
Delete "$INSTDIR\qt5_plugins\printsupport\windowsprintersupport.dll"
Delete "$INSTDIR\onionshare.ico"
Delete "$INSTDIR\uninstall.exe"
rmDir "$INSTDIR\Include"
rmDir "$INSTDIR\lib2to3"
rmDir "$INSTDIR\share"
rmDir "$INSTDIR\share\html"
rmDir "$INSTDIR\share\images"
rmDir "$INSTDIR\share\locale"
rmDir "$INSTDIR\qt5_plugins\iconengines"
rmDir "$INSTDIR\qt5_plugins\imageformats"
rmDir "$INSTDIR\qt5_plugins\platforms"
rmDir "$INSTDIR\qt5_plugins\printsupport"
rmDir "$INSTDIR\qt5_plugins"
rmDir "$INSTDIR"
# remove uninstaller information from the registry
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
SectionEnd
!endif