aboutsummaryrefslogtreecommitdiff
path: root/contrib/tor.nsi
blob: c05dabfbbde73f00d0968e6d40eec4cbe273d8f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
;tor.nsi - A basic win32 installer for Tor
; Originally written by J Doe.
; See LICENSE for licencing information
;-----------------------------------------
;
; How to make an installer:
;   Step 0. If you are a Tor maintainer, make sure that tor.nsi and
;           src/win32/orconfig.h all have the correct version number.
;   Step 1. Download and install OpenSSL.  Make sure that the OpenSSL
;           version listed below matches the one you downloaded.
;   Step 2. Download and install NSIS (http://nsis.sourceforge.net)
;   Step 3. Make a directory under the main tor directory called "bin".
;   Step 4. Copy ssleay32.dll and libeay32.dll from OpenSSL into "bin".
;   Step 5. Run man2html on tor.1.in; call the result tor-reference.html
;           Run man2html on tor-resolve.1; call the result tor-resolve.html
;   Step 6. Copy torrc.sample.in to torrc.sample.
;   Step 7. Build tor.exe and tor_resolve.exe; save the result into bin.
;   Step 8. cd into contrib and run "makensis tor.nsi".
;
; Problems:
;   - Copying torrc.sample.in to torrc.sample and tor.1.in (implicitly)
;     to tor.1 is a Bad Thing, and leaves us with @autoconf@ vars in the final
;     result.
;   - Building Tor requires too much windows C clue.
;     - We should have actual makefiles for VC that do the right thing.
;   - I need to learn more NSIS juju to solve these:
;     - There should be a batteries-included installer that comes with
;       privoxy too. (Check privoxy license on this; be sure to include
;       all privoxy documents.)
;   - The filename should probably have a revision number.

!include "MUI.nsh"

!define VERSION "0.0.9rc4"
!define INSTALLER "tor-${VERSION}-win32.exe"
!define WEBSITE "http://freehaven.net/tor/"

!define LICENSE "..\LICENSE"
;BIN is where it expects to find tor.exe, tor_resolve.exe, libeay32.dll and
;  ssleay32.dll
!define BIN "..\bin"

SetCompressor lzma
;SetCompressor zlib
OutFile ${INSTALLER}
InstallDir $PROGRAMFILES\Tor
SetOverWrite ifnewer

Name "Tor"
Caption "Tor ${VERSION} Setup"
BrandingText "The Onion Router"
CRCCheck on

;Use upx on the installer header to shrink the size.
!packhdr header.dat "upx --best header.dat"

!define MUI_WELCOMEPAGE_TITLE "Welcome to the Tor ${VERSION} 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}

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${LICENSE}"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
!insertmacro MUI_LANGUAGE "English"

Var configdir
Var configfile

;Sections
;--------

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"
   WriteIniStr "$INSTDIR\Tor Website.url" "InternetShortcut" "URL" ${WEBSITE}

   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" "" +5
      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 +3
      Delete $configdir\torrc
      Goto +2
         StrCpy $configfile "torrc.sample"
   File /oname=$configfile "..\src\config\torrc.sample"
SectionEnd

Section "OpenSSL 0.9.7e" OpenSSL
   SetOutPath $INSTDIR
   File "${BIN}\libeay32.dll"
   File "${BIN}\ssleay32.dll"
SectionEnd

Section "Documents" Docs
   SetOutPath "$INSTDIR\Documents"
   File "..\doc\CLIENTS"
   File "..\doc\tor-spec.txt"
   #File "..\doc\FAQ"
   File "..\doc\HACKING"
   File "..\doc\rend-spec.txt"
   File "..\doc\control-spec.txt"
   File "..\doc\tor-doc.html"
   File "..\doc\tor-doc.css"
   File "..\doc\tor-resolve.html"
   File "..\doc\tor-reference.html"
   File "..\doc\design-paper\tor-design.pdf"
   File "..\README"
   File "..\AUTHORS"
   File "..\ChangeLog"
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"
   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\*.*" "" +4
      CreateDirectory "$SMPROGRAMS\Tor\Documents"
      CreateShortCut "$SMPROGRAMS\Tor\Documents\Tor Documentation.lnk" "$INSTDIR\Documents\tor-doc.html"
      CreateShortCut "$SMPROGRAMS\Tor\Documents\Tor Specification.lnk" "$INSTDIR\Documents\tor-spec.txt"
SectionEnd

Section "Desktop" Desktop
   SetOutPath $INSTDIR
   CreateShortCut "$DESKTOP\Tor.lnk" "$INSTDIR\tor.exe"
SectionEnd

Section /o "Run at startup" Startup
   SetOutPath $INSTDIR
   CreateShortCut "$SMSTARTUP\Tor.lnk" "$INSTDIR\tor.exe" "" "" 0 SW_SHOWMINIMIZED
SectionEnd

SubSectionEnd

Section "Uninstall"
   Delete "$DESKTOP\Tor.lnk"
   Delete "$INSTDIR\libeay32.dll"
   Delete "$INSTDIR\ssleay32.dll"
   Delete "$INSTDIR\tor.exe"
   Delete "$INSTDIR\tor_resolve.exe"
   Delete "$INSTDIR\Tor Website.url"
   Delete "$INSTDIR\torrc"
   Delete "$INSTDIR\torrc.sample"
   StrCmp $configdir $INSTDIR +2 ""
      RMDir /r $configdir
   Delete "$INSTDIR\Uninstall.exe"
   RMDir /r "$INSTDIR\Documents"
   RMDir $INSTDIR
   RMDir /r "$SMPROGRAMS\Tor"
   Delete "$SMSTARTUP\Tor.lnk"
   DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Tor"
SectionEnd

Section -End
    WriteUninstaller "$INSTDIR\Uninstall.exe"
    ;The registry entries simply add the Tor uninstaller to the Windows
    ;uninstall list.
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tor" "DisplayName" "Tor (remove only)"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tor" "UninstallString" '"$INSTDIR\Uninstall.exe"'
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 ${OpenSSL} "OpenSSL libraries required by Tor."
  !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