diff --git a/contrib/tor-mingw.nsi.in b/contrib/tor-mingw.nsi.in index 1374ee25ea..c78daee8a6 100644 --- a/contrib/tor-mingw.nsi.in +++ b/contrib/tor-mingw.nsi.in @@ -1,23 +1,26 @@ ;tor.nsi - A basic win32 installer for Tor ; Originally written by J Doe. +; Modified by Steve Topletz ; See LICENSE for licensing information ;----------------------------------------- ; !include "MUI.nsh" - +!include "LogicLib.nsh" +!include "FileFunc.nsh" +!insertmacro GetParameters + !define VERSION "0.2.0.12-alpha-dev" !define INSTALLER "tor-${VERSION}-win32.exe" !define WEBSITE "https://www.torproject.org/" - !define LICENSE "LICENSE" -;BIN is where it expects to find tor.exe and tor-resolve.exe -!define BIN "..\bin" - -SetCompressor /SOLID lzma +!define BIN "..\bin" ;BIN is where it expects to find tor.exe, tor-resolve.exe, libcrypto.a and libssl.a + + +SetCompressor /SOLID LZMA ;Tighter compression +RequestExecutionLevel user ;Updated for Vista compatibility OutFile ${INSTALLER} InstallDir $PROGRAMFILES\Tor SetOverWrite ifnewer - Name "Tor" Caption "Tor ${VERSION} Setup" BrandingText "The Onion Router" @@ -31,13 +34,12 @@ VIAddVersionKey "LegalCopyright" " VIAddVersionKey "FileDescription" "Tor is an implementation of Onion Routing. You can read more at ${WEBSITE}" VIAddVersionKey "FileVersion" "${VERSION}" -!define MUI_WELCOMEPAGE_TITLE "Welcome to the Tor ${VERSION} Setup Wizard" +!define MUI_WELCOMEPAGE_TITLE "Welcome to the Tor Setup Wizard" !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Tor ${VERSION}.\r\n\r\nIf you have previously installed Tor and it is currently running, please exit Tor first before continuing this installation.\r\n\r\n$_CLICK" !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\win-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico" !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\win.bmp" -!define MUI_HEADERIMAGE !define MUI_FINISHPAGE_RUN "$INSTDIR\tor.exe" !define MUI_FINISHPAGE_LINK "Visit the Tor website for the latest updates." !define MUI_FINISHPAGE_LINK_LOCATION ${WEBSITE} @@ -56,8 +58,12 @@ VIAddVersionKey "FileVersion" "${VERSION}" !insertmacro MUI_UNPAGE_FINISH !insertmacro MUI_LANGUAGE "English" -Var configdir -Var configfile +Var CONFIGDIR +Var CONFIGFILE + +Function .onInit + Call ParseCmdLine +FunctionEnd ;Sections ;-------- @@ -65,89 +71,48 @@ Var configfile Section "Tor" Tor ;Files that have to be installed for tor to run and that the user ;cannot choose not to install - SectionIn RO - SetOutPath $INSTDIR - File "${BIN}\tor.exe" - File "${BIN}\tor-resolve.exe" - File "${BIN}\tor.ico" - WriteIniStr "$INSTDIR\Tor Website.url" "InternetShortcut" "URL" ${WEBSITE} + SectionIn RO + SetOutPath $INSTDIR + Call ExtractBinaries + Call ExtractIcon + WriteINIStr "$INSTDIR\Tor Website.url" "InternetShortcut" "URL" ${WEBSITE} - StrCpy $configfile "torrc" - StrCpy $configdir $APPDATA\Tor + StrCpy $CONFIGFILE "torrc" + StrCpy $CONFIGDIR $APPDATA\Tor ; ;If $APPDATA isn't valid here (Early win95 releases with no updated ; ; shfolder.dll) then we put it in the program directory instead. ; StrCmp $APPDATA "" "" +2 -; StrCpy $configdir $INSTDIR - SetOutPath $configdir - ;If there's already a torrc config file, ask if they want to - ;overwrite it with the new one. - IfFileExists "$configdir\torrc" "" endiftorrc - MessageBox MB_ICONQUESTION|MB_YESNO "You already have a Tor config file.$\r$\nDo you want to overwrite it with the default sample config file?" IDNO yesreplace - Delete $configdir\torrc - Goto endiftorrc - yesreplace: - StrCpy $configfile "torrc.sample" - endiftorrc: - File /oname=$configfile "..\src\config\torrc.sample" +; StrCpy $CONFIGDIR $INSTDIR + SetOutPath $CONFIGDIR + ;If there's already a torrc config file, ask if they want to + ;overwrite it with the new one. + ${If} ${FileExists} "$CONFIGDIR\torrc" + MessageBox MB_ICONQUESTION|MB_YESNO "You already have a Tor config file.$\r$\nDo you want to overwrite it with the default sample config file?" IDYES Yes IDNO No + Yes: + Delete $CONFIGDIR\torrc + Goto Next + No: + StrCpy $CONFIGFILE "torrc.sample" + Next: + ${EndIf} + File /oname=$CONFIGFILE "..\src\config\torrc.sample" SectionEnd Section "Documents" Docs - SetOutPath "$INSTDIR\Documents" - ;File "doc\FAQ" - File "..\doc\HACKING" - File "..\doc\spec\address-spec.txt" - File "..\doc\spec\control-spec.txt" - File "..\doc\spec\control-spec-v0.txt" - File "..\doc\spec\dir-spec.txt" - File "..\doc\spec\dir-spec-v1.txt" - File "..\doc\spec\path-spec.txt" - File "..\doc\spec\rend-spec.txt" - File "..\doc\spec\socks-extensions.txt" - File "..\doc\spec\tor-spec.txt" - File "..\doc\spec\version-spec.txt" - ; - ; WEBSITE-FILES-HERE - ; - File "..\doc\tor-resolve.html" - File "..\doc\tor-reference.html" - ; - File "..\doc\design-paper\tor-design.pdf" - ; - File "..\README" - File "..\AUTHORS" - File "..\ChangeLog" - File "..\LICENSE" + Call ExtractDocuments SectionEnd -;Section "TorButton for FireFox" Torbutton -; SetOutPath $INSTDIR -; File "${BIN}\torbutton-1.0.4-fx+tb.xpi" -; -; ReadRegStr $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe" "Path" -; StrCmp $1 "" +2 0 ; if Path is empty or null, then skip to an error, otherwise proceed -; Exec '"$1firefox.exe" -install-global-extension "$INSTDIR\torbutton-1.0.4-fx+tb.xpi"' -; DetailPrint "Torbutton installed" -; Goto +2 -; MessageBox MB_OK|MB_ICONSTOP "FireFox wasn't found on your system. Not installing Torbutton." -; DetailPrint "Firefox NOT found." -;SectionEnd - SubSection /e "Shortcuts" Shortcuts Section "Start Menu" StartMenu - SetOutPath $INSTDIR - IfFileExists "$SMPROGRAMS\Tor\*.*" "" +2 - RMDir /r "$SMPROGRAMS\Tor" - CreateDirectory "$SMPROGRAMS\Tor" - CreateShortCut "$SMPROGRAMS\Tor\Tor.lnk" "$INSTDIR\tor.exe" "" "$INSTDIR\tor.ico" - CreateShortCut "$SMPROGRAMS\Tor\Torrc.lnk" "Notepad.exe" "$configdir\torrc" - CreateShortCut "$SMPROGRAMS\Tor\Tor Website.lnk" "$INSTDIR\Tor Website.url" - CreateShortCut "$SMPROGRAMS\Tor\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - IfFileExists "$INSTDIR\Documents\*.*" "" endifdocs - CreateDirectory "$SMPROGRAMS\Tor\Documents" - CreateShortCut "$SMPROGRAMS\Tor\Documents\Tor Manual.lnk" "$INSTDIR\Documents\tor-reference.html" - CreateShortCut "$SMPROGRAMS\Tor\Documents\Tor Documentation.lnk" "$INSTDIR\Documents" - CreateShortCut "$SMPROGRAMS\Tor\Documents\Tor Specification.lnk" "$INSTDIR\Documents\tor-spec.txt" + SetOutPath $INSTDIR + ${If} ${FileExists} "$SMPROGRAMS\Tor\*.*" + RMDir /r "$SMPROGRAMS\Tor" + ${EndIf} + Call CreateTorLinks + ${If} ${FileExists} "$INSTDIR\Documents\*.*" + Call CreateDocLinks + ${EndIf} endifdocs: SectionEnd @@ -164,24 +129,7 @@ SectionEnd SubSectionEnd Section "Uninstall" - Delete "$DESKTOP\Tor.lnk" - Delete "$INSTDIR\libcrypto.a" - Delete "$INSTDIR\libssl.a" - Delete "$INSTDIR\tor.exe" - Delete "$INSTDIR\tor-resolve.exe" - Delete "$INSTDIR\Tor Website.url" - Delete "$INSTDIR\torrc" - Delete "$INSTDIR\torrc.sample" - Delete "$INSTDIR\tor.ico" - StrCmp $configdir $INSTDIR +2 "" - RMDir /r $configdir - Delete "$INSTDIR\Uninstall.exe" - RMDir /r "$INSTDIR\Documents" - RMDir $INSTDIR - RMDir /r "$SMPROGRAMS\Tor" - RMDir /r "$APPDATA\Tor" - Delete "$SMSTARTUP\Tor.lnk" - DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Tor" + Call un.InstallPackage SectionEnd Section -End @@ -193,11 +141,127 @@ Section -End SectionEnd !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${Tor} "The core executable and config files needed for Tor to run." - !insertmacro MUI_DESCRIPTION_TEXT ${Docs} "Documentation about Tor." - !insertmacro MUI_DESCRIPTION_TEXT ${ShortCuts} "Shortcuts to easily start Tor" - !insertmacro MUI_DESCRIPTION_TEXT ${StartMenu} "Shortcuts to access Tor and it's documentation from the Start Menu" - !insertmacro MUI_DESCRIPTION_TEXT ${Desktop} "A shortcut to start Tor from the desktop" - !insertmacro MUI_DESCRIPTION_TEXT ${Startup} "Launches Tor automatically at startup in a minimized window" +!insertmacro MUI_DESCRIPTION_TEXT ${Tor} "The core executable and config files needed for Tor to run." +!insertmacro MUI_DESCRIPTION_TEXT ${Docs} "Documentation about Tor." +!insertmacro MUI_DESCRIPTION_TEXT ${ShortCuts} "Shortcuts to easily start Tor" +!insertmacro MUI_DESCRIPTION_TEXT ${StartMenu} "Shortcuts to access Tor and it's documentation from the Start Menu" +!insertmacro MUI_DESCRIPTION_TEXT ${Desktop} "A shortcut to start Tor from the desktop" +!insertmacro MUI_DESCRIPTION_TEXT ${Startup} "Launches Tor automatically at startup in a minimized window" !insertmacro MUI_FUNCTION_DESCRIPTION_END +;####################Functions######################### + +Function ExtractBinaries + File "${BIN}\tor.exe" + File "${BIN}\tor-resolve.exe" +FunctionEnd + +Function ExtractIcon + File "${BIN}\tor.ico" +FunctionEnd + +Function ExtractSpecs + ;File "doc\FAQ" + File "..\doc\HACKING" + File "..\doc\spec\address-spec.txt" + File "..\doc\spec\control-spec.txt" + File "..\doc\spec\control-spec-v0.txt" + File "..\doc\spec\dir-spec.txt" + File "..\doc\spec\dir-spec-v1.txt" + File "..\doc\spec\path-spec.txt" + File "..\doc\spec\rend-spec.txt" + File "..\doc\spec\socks-extensions.txt" + File "..\doc\spec\tor-spec.txt" + File "..\doc\spec\version-spec.txt" +FunctionEnd + +Function ExtractHTML + File "..\doc\tor-resolve.html" + File "..\doc\tor-reference.html" +FunctionEnd + +Function ExtractDesignDocs + File "..\doc\design-paper\tor-design.pdf" +FunctionEnd + +Function ExtractReleaseDocs + File "..\README" + File "..\AUTHORS" + File "..\ChangeLog" + File "..\LICENSE" +FunctionEnd + +Function ExtractDocuments + SetOutPath "$INSTDIR\Documents" + Call ExtractSpecs + Call ExtractHTML + Call ExtractDesignDocs + Call ExtractReleaseDocs +FunctionEnd + +Function un.InstallFiles + Delete "$DESKTOP\Tor.lnk" + Delete "$INSTDIR\libcrypto.a" + Delete "$INSTDIR\libssl.a" + Delete "$INSTDIR\tor.exe" + Delete "$INSTDIR\tor-resolve.exe" + Delete "$INSTDIR\Tor Website.url" + Delete "$INSTDIR\torrc" + Delete "$INSTDIR\torrc.sample" + Delete "$INSTDIR\tor.ico" + Delete "$SMSTARTUP\Tor.lnk" + Delete "$INSTDIR\Uninstall.exe" +FunctionEnd + +Function un.InstallDirectories + ${If} $CONFIGDIR == $INSTDIR + RMDir /r $CONFIGDIR + ${EndIf} + RMDir /r "$INSTDIR\Documents" + RMDir $INSTDIR + RMDir /r "$SMPROGRAMS\Tor" + RMDir /r "$APPDATA\Tor" +FunctionEnd + +Function un.WriteRegistry + DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Tor" +FunctionEnd + +Function un.InstallPackage + Call un.InstallFiles + Call un.InstallDirectories + Call un.WriteRegistry +FunctionEnd + +Function CreateTorLinks + CreateDirectory "$SMPROGRAMS\Tor" + CreateShortCut "$SMPROGRAMS\Tor\Tor.lnk" "$INSTDIR\tor.exe" "" "$INSTDIR\tor.ico" + CreateShortCut "$SMPROGRAMS\Tor\Torrc.lnk" "Notepad.exe" "$CONFIGDIR\torrc" + CreateShortCut "$SMPROGRAMS\Tor\Tor Website.lnk" "$INSTDIR\Tor Website.url" + CreateShortCut "$SMPROGRAMS\Tor\Uninstall.lnk" "$INSTDIR\Uninstall.exe" +FunctionEnd + +Function CreateDocLinks + CreateDirectory "$SMPROGRAMS\Tor\Documents" + CreateShortCut "$SMPROGRAMS\Tor\Documents\Tor Manual.lnk" "$INSTDIR\Documents\tor-reference.html" + CreateShortCut "$SMPROGRAMS\Tor\Documents\Tor Documentation.lnk" "$INSTDIR\Documents" + CreateShortCut "$SMPROGRAMS\Tor\Documents\Tor Specification.lnk" "$INSTDIR\Documents\tor-spec.txt" +FunctionEnd + +Function ParseCmdLine + ${GetParameters} $1 + ${If} $1 == "-x" ;Extract All Files + StrCpy $INSTDIR $EXEDIR + Call ExtractBinaries + Call ExtractDocuments + Quit + ${ElseIf} $1 == "-b" ;Extract Binaries Only + StrCpy $INSTDIR $EXEDIR + Call ExtractBinaries + Quit + ${ElseIf} $1 != "" + MessageBox MB_OK|MB_TOPMOST `${Installer} [-x|-b]$\r$\n$\r$\n -x Extract all files$\r$\n -b Extract binary files only` + Quit + ${EndIf} +FunctionEnd +