updates from steve topletz

svn:r12803
This commit is contained in:
Andrew Lewman 2007-12-14 05:10:14 +00:00
parent 408a4fa9b4
commit 7e327380a9

View File

@ -1,23 +1,26 @@
;tor.nsi - A basic win32 installer for Tor ;tor.nsi - A basic win32 installer for Tor
; Originally written by J Doe. ; Originally written by J Doe.
; Modified by Steve Topletz
; See LICENSE for licensing information ; See LICENSE for licensing information
;----------------------------------------- ;-----------------------------------------
; ;
!include "MUI.nsh" !include "MUI.nsh"
!include "LogicLib.nsh"
!include "FileFunc.nsh"
!insertmacro GetParameters
!define VERSION "0.2.0.12-alpha-dev" !define VERSION "0.2.0.12-alpha-dev"
!define INSTALLER "tor-${VERSION}-win32.exe" !define INSTALLER "tor-${VERSION}-win32.exe"
!define WEBSITE "https://www.torproject.org/" !define WEBSITE "https://www.torproject.org/"
!define LICENSE "LICENSE" !define LICENSE "LICENSE"
;BIN is where it expects to find tor.exe and tor-resolve.exe !define BIN "..\bin" ;BIN is where it expects to find tor.exe, tor-resolve.exe, libcrypto.a and libssl.a
!define BIN "..\bin"
SetCompressor /SOLID lzma
SetCompressor /SOLID LZMA ;Tighter compression
RequestExecutionLevel user ;Updated for Vista compatibility
OutFile ${INSTALLER} OutFile ${INSTALLER}
InstallDir $PROGRAMFILES\Tor InstallDir $PROGRAMFILES\Tor
SetOverWrite ifnewer SetOverWrite ifnewer
Name "Tor" Name "Tor"
Caption "Tor ${VERSION} Setup" Caption "Tor ${VERSION} Setup"
BrandingText "The Onion Router" 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 "FileDescription" "Tor is an implementation of Onion Routing. You can read more at ${WEBSITE}"
VIAddVersionKey "FileVersion" "${VERSION}" 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_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_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\win-install.ico" !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\win-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico"
!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\win.bmp" !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\win.bmp"
!define MUI_HEADERIMAGE
!define MUI_FINISHPAGE_RUN "$INSTDIR\tor.exe" !define MUI_FINISHPAGE_RUN "$INSTDIR\tor.exe"
!define MUI_FINISHPAGE_LINK "Visit the Tor website for the latest updates." !define MUI_FINISHPAGE_LINK "Visit the Tor website for the latest updates."
!define MUI_FINISHPAGE_LINK_LOCATION ${WEBSITE} !define MUI_FINISHPAGE_LINK_LOCATION ${WEBSITE}
@ -56,8 +58,12 @@ VIAddVersionKey "FileVersion" "${VERSION}"
!insertmacro MUI_UNPAGE_FINISH !insertmacro MUI_UNPAGE_FINISH
!insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "English"
Var configdir Var CONFIGDIR
Var configfile Var CONFIGFILE
Function .onInit
Call ParseCmdLine
FunctionEnd
;Sections ;Sections
;-------- ;--------
@ -67,87 +73,46 @@ Section "Tor" Tor
;cannot choose not to install ;cannot choose not to install
SectionIn RO SectionIn RO
SetOutPath $INSTDIR SetOutPath $INSTDIR
File "${BIN}\tor.exe" Call ExtractBinaries
File "${BIN}\tor-resolve.exe" Call ExtractIcon
File "${BIN}\tor.ico" WriteINIStr "$INSTDIR\Tor Website.url" "InternetShortcut" "URL" ${WEBSITE}
WriteIniStr "$INSTDIR\Tor Website.url" "InternetShortcut" "URL" ${WEBSITE}
StrCpy $configfile "torrc" StrCpy $CONFIGFILE "torrc"
StrCpy $configdir $APPDATA\Tor StrCpy $CONFIGDIR $APPDATA\Tor
; ;If $APPDATA isn't valid here (Early win95 releases with no updated ; ;If $APPDATA isn't valid here (Early win95 releases with no updated
; ; shfolder.dll) then we put it in the program directory instead. ; ; shfolder.dll) then we put it in the program directory instead.
; StrCmp $APPDATA "" "" +2 ; StrCmp $APPDATA "" "" +2
; StrCpy $configdir $INSTDIR ; StrCpy $CONFIGDIR $INSTDIR
SetOutPath $configdir SetOutPath $CONFIGDIR
;If there's already a torrc config file, ask if they want to ;If there's already a torrc config file, ask if they want to
;overwrite it with the new one. ;overwrite it with the new one.
IfFileExists "$configdir\torrc" "" endiftorrc ${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?" IDNO yesreplace 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
Delete $configdir\torrc Yes:
Goto endiftorrc Delete $CONFIGDIR\torrc
yesreplace: Goto Next
StrCpy $configfile "torrc.sample" No:
endiftorrc: StrCpy $CONFIGFILE "torrc.sample"
File /oname=$configfile "..\src\config\torrc.sample" Next:
${EndIf}
File /oname=$CONFIGFILE "..\src\config\torrc.sample"
SectionEnd SectionEnd
Section "Documents" Docs Section "Documents" Docs
SetOutPath "$INSTDIR\Documents" Call ExtractDocuments
;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"
SectionEnd 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 SubSection /e "Shortcuts" Shortcuts
Section "Start Menu" StartMenu Section "Start Menu" StartMenu
SetOutPath $INSTDIR SetOutPath $INSTDIR
IfFileExists "$SMPROGRAMS\Tor\*.*" "" +2 ${If} ${FileExists} "$SMPROGRAMS\Tor\*.*"
RMDir /r "$SMPROGRAMS\Tor" RMDir /r "$SMPROGRAMS\Tor"
CreateDirectory "$SMPROGRAMS\Tor" ${EndIf}
CreateShortCut "$SMPROGRAMS\Tor\Tor.lnk" "$INSTDIR\tor.exe" "" "$INSTDIR\tor.ico" Call CreateTorLinks
CreateShortCut "$SMPROGRAMS\Tor\Torrc.lnk" "Notepad.exe" "$configdir\torrc" ${If} ${FileExists} "$INSTDIR\Documents\*.*"
CreateShortCut "$SMPROGRAMS\Tor\Tor Website.lnk" "$INSTDIR\Tor Website.url" Call CreateDocLinks
CreateShortCut "$SMPROGRAMS\Tor\Uninstall.lnk" "$INSTDIR\Uninstall.exe" ${EndIf}
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"
endifdocs: endifdocs:
SectionEnd SectionEnd
@ -164,24 +129,7 @@ SectionEnd
SubSectionEnd SubSectionEnd
Section "Uninstall" Section "Uninstall"
Delete "$DESKTOP\Tor.lnk" Call un.InstallPackage
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"
SectionEnd SectionEnd
Section -End Section -End
@ -201,3 +149,119 @@ SectionEnd
!insertmacro MUI_DESCRIPTION_TEXT ${Startup} "Launches Tor automatically at startup in a minimized window" !insertmacro MUI_DESCRIPTION_TEXT ${Startup} "Launches Tor automatically at startup in a minimized window"
!insertmacro MUI_FUNCTION_DESCRIPTION_END !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