Commit e7b3a7c5 authored by Justin Hipple's avatar Justin Hipple
Browse files

First attempt at packaging Vidalia and friends for win32. The .nsi files...

First attempt at packaging Vidalia and friends for win32. The .nsi files should probably be reviewed by somebody more experienced <cough>.

svn:r362
parent af847cbe
Loading
Loading
Loading
Loading
+11 −19
Changes for pkg/win32/bundle/build-bundle.txt: 11 added lines, 19 removed lines.
Original line number Diff line number Diff line
                Building the Tor/TorCP/Privoxy Bundle
                Building the Vidalia/Tor/Privoxy Bundle


1. Create a base directory under which the necessary sources will be extracted
@@ -10,39 +10,31 @@ and place the .nsi file in it. For this example, we will just use C:\bundle\.

        C:\bundle\privoxy\
        C:\bundle\tor\
        C:\bundle\torcp\
        C:\bundle\vidalia\

3. The TorCP section of the installer looks for a special directory from which
it will grab the following dlls:

        C:\bundle\torcp\dll\mfc70.dll
        C:\bundle\torcp\dll\msvcp70.dll
        C:\bundle\torcp\dll\msvcr70.dll

4. Modify the appropriate version values (TORCP_VERSION, TOR_VERSION, and
3. Modify the appropriate version values (VIDALIA_VERSION, TOR_VERSION, and
PRIVOXY_VERSION) at the top of the .nsi file.

5. Create directories for the appropriate versions of each component.
4. Create directories for the appropriate versions of each component.

        C:\bundle\privoxy\3.0.3\
        C:\bundle\tor\0.1.1.12\
        C:\bundle\torcp\0.0.4\
        C:\bundle\tor\0.1.1.14\
        C:\bundle\vidalia\0.0.1-alpha\

6. Install Privoxy to the directory you created for its version and modify its
config.txt file as follows:
5. Install Vidalia, Tor, and Privoxy to the directories you created for them.

6. Modify Privoxy's config.txt file as follows:

    * Add "forward-socks4a / localhost:9050 ." (without quotes) to the top
    * Comment out "logfile privoxy.log" in Section 1.5
    * Comment out "jarfile jar.log" in Section 1.6
    * Uncomment "log-messages 1" in Section 6 and change the '1' to a '0'

7. Install TorCP to the directory you created for its version.

8. Install Tor to the directory you created for its version. Remember that you
7. Install Tor to the directory you created for its version. Remember that you
may need to grab the torrc.sample file from %APPDATA%\Tor that was created by
the installer and place it in the directory for the bundle's version of Tor.

9. Run the .nsi script. The bundle will be named according the the versions
8. Run the .nsi script. The bundle will be named according the the versions
you specified in Step 4 and placed in the base directory created in Step 1.

--------------------------------------------------------------------------------
+53 −64
Changes for pkg/win32/bundle/bundle.nsi: 53 added lines, 64 removed lines.
Original line number Diff line number Diff line
@@ -7,13 +7,13 @@

;---------------------------------
; Global Definitions
!define TORCP_NAME "TorCP"
!define TORCP_EXEC "torcp.exe"
!define TORCP_VERSION "0.0.4"
!define VIDALIA_NAME "Vidalia"
!define VIDALIA_EXEC "vidalia.exe"
!define VIDALIA_VERSION "0.0.1-alpha"

!define TOR_NAME "Tor"
!define TOR_EXEC "tor.exe"
!define TOR_VERSION "0.1.1.13"
!define TOR_VERSION "0.1.1.14"

!define PRIVOXY_NAME "Privoxy"
!define PRIVOXY_EXEC "privoxy.exe"
@@ -21,19 +21,18 @@

!define BUNDLE_REVISION "1"

!define APPNAME "Tor-TorCP-Privoxy Bundle"
!define APPVERSION "${TOR_VERSION}-${TORCP_VERSION}"
!define PRODVERSION "0.0.4.2" ; Product version must be x.x.x.x
!define APPNAME "Vidalia-Tor-Privoxy Bundle"
!define APPVERSION "${TOR_VERSION}-${VIDALIA_VERSION}"
!define PRODVERSION "0.0.1.0" ; Product version must be x.x.x.x
!define APPDESCRIPTION "${APPNAME} ${APPVERSION}"
!define INSTALLFILE "tor-${TOR_VERSION}-torcp-${TORCP_VERSION}-bundle.exe"
!define BUNDLE_UNINSTALLER "tor-bundle-uninstall.exe"
!packhdr header.dat "upx --best header.dat"
!define INSTALLFILE "${APPNAME}_${APPVERSION}_install.exe"
!define BUNDLE_UNINSTALLER "vidalia-bundle-uninstall.exe"


;--------------------------------
; Basic Installer Information
Name "Tor-TorCP-Privoxy Bundle"
Caption "Tor-TorCP-Privoxy Bundle"
Name "Vidalia-Tor-Privoxy Bundle"
Caption "Vidalia-Tor-Privoxy Bundle"
BrandingText "${APPDESCRIPTION} (Rev. ${BUNDLE_REVISION})"
OutFile "${INSTALLFILE}"
CRCCheck on
@@ -49,6 +48,7 @@ OutFile "${INSTALLFILE}"
InstallDir "$PROGRAMFILES"
InstallDirRegKey HKCU "Software" "${APPNAME}"

SetCompressor /SOLID lzma
SetOverWrite ifnewer
AutoCloseWindow false
ShowInstDetails show
@@ -67,7 +67,7 @@ XPStyle on
;--------------------------------
; MUI Options
!define MUI_WELCOMEPAGE_TITLE "Welcome to the ${APPNAME} Setup Wizard"
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of:\r\n\tTor\t${TOR_VERSION}\r\n\tTorCP\t${TORCP_VERSION}\r\n\tPrivoxy\t${PRIVOXY_VERSION}\r\n\r\nIf you have previously installed Tor, TorCP, or Privoxy, please make sure they are not running before continuing this installation.\r\n\r\n$_CLICK"
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of:\r\n\tVidalia\t${VIDALIA_VERSION}\r\n\tTor\t${TOR_VERSION}\r\n\tPrivoxy\t${PRIVOXY_VERSION}\r\n\r\nIf you have previously installed Vidalia, Tor, or Privoxy, please make sure they are not running 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"
@@ -147,8 +147,8 @@ SectionGroup "!Tor ${TOR_VERSION}" TorGroup
       File "tor\${TOR_VERSION}\Documents\HACKING"
       File "tor\${TOR_VERSION}\Documents\rend-spec.txt"
       File "tor\${TOR_VERSION}\Documents\control-spec.txt"
       File "tor\${TOR_VERSION}\Documents\tor-doc.html"
       File "tor\${TOR_VERSION}\Documents\tor-doc.css"
       File "tor\${TOR_VERSION}\Documents\tor-doc-win32.html"
       File "tor\${TOR_VERSION}\Documents\stylesheet.css"
       File "tor\${TOR_VERSION}\Documents\tor-reference.html"
       File "tor\${TOR_VERSION}\Documents\tor-resolve.html"
       File "tor\${TOR_VERSION}\Documents\tor-design.pdf"
@@ -187,59 +187,48 @@ SectionGroupEnd


;--------------------------------
; TorCP
var bInstallTorCP
SectionGroup "TorCP ${TORCP_VERSION}" TorCPGroup
    Section "TorCP" TorCP
; Vidalia
var bInstallVidalia
SectionGroup "Vidalia ${VIDALIA_VERSION}" VidaliaGroup
    Section "Vidalia" Vidalia
      SectionIn 1 2

      ; Set output path to the installation directory.
      SetOutPath "$INSTDIR\TorCP"
      File "TorCP\${TORCP_VERSION}\${TORCP_EXEC}"
      File "TorCP\${TORCP_VERSION}\README"
      File "TorCP\${TORCP_VERSION}\CHANGELOG"
      File "TorCP\${TORCP_VERSION}\LICENSE"
      File "TorCP\${TORCP_VERSION}\TODO"

      ; Check if these files exist before trying to overwrite them
      SetOutPath $SYSDIR
      IfFileExists $SYSDIR\mfc70.dll +2 0
        File "TorCP\dll\mfc70.dll"
      IfFileExists $SYSDIR\msvcp70.dll +2 0
        File "TorCP\dll\msvcp70.dll"
      IfFileExists $SYSDIR\msvcr70.dll +2 0
        File "TorCP\dll\msvcr70.dll"  
      SetOutPath "$INSTDIR\Vidalia"
      File "Vidalia\${VIDALIA_VERSION}\${VIDALIA_EXEC}"
      File "Vidalia\${VIDALIA_VERSION}\README"
      File "Vidalia\${VIDALIA_VERSION}\CHANGELOG"
      File "Vidalia\${VIDALIA_VERSION}\LICENSE"
      File "Vidalia\${VIDALIA_VERSION}\COPYING"
      File "Vidalia\${VIDALIA_VERSION}\AUTHORS"

      ; Write the installation path into the registry
      WriteRegStr HKCU SOFTWARE\TorCP "Install_Dir" "$INSTDIR"

      ; Write the location of Tor's executable
      WriteRegStr HKCU SOFTWARE\TorCP "TorPath" "$INSTDIR\Tor"
      WriteRegStr HKCU SOFTWARE\Vidalia "Install_Dir" "$INSTDIR"

      ; Write the uninstall keys for Windows
      WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\TorCP" "DisplayName" "Tor Control Panel"
      WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\TorCP" "UninstallString" '"$INSTDIR\TorCP\${BUNDLE_UNINSTALLER}"'
      WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\TorCP" "NoModify" 1
      WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\TorCP" "NoRepair" 1
      WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Vidalia" "DisplayName" "${APPDESCRIPTION}"
      WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Vidalia" "UninstallString" '"$INSTDIR\${BUNDLE_UNINSTALLER}"'
      WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Vidalia" "NoModify" 1
      WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Vidalia" "NoRepair" 1
      
      IntOp $bInstallTorCP 0 + 1
      IntOp $bInstallVidalia 0 + 1
    SectionEnd

    ;--------------------------------
    ; Start Menu Shortcuts
    ; Optional section (can be disabled by the user)
    Section "Start Menu Shortcuts" TorCPShortcuts
    Section "Start Menu Shortcuts" VidaliaShortcuts
      SectionIn 1 2
      CreateDirectory "$SMPROGRAMS\TorCP"
      CreateShortCut "$SMPROGRAMS\TorCP\TorCP.lnk" "$INSTDIR\TorCP\${TORCP_EXEC}" "" "$INSTDIR\TorCP\${TORCP_EXEC}" 0  
      CreateShortCut "$SMPROGRAMS\TorCP\Uninstall.lnk" "$INSTDIR\${BUNDLE_UNINSTALLER}" "" "$INSTDIR\${BUNDLE_UNINSTALLER}" 0
      CreateDirectory "$SMPROGRAMS\Vidalia"
      CreateShortCut "$SMPROGRAMS\Vidalia\Vidalia.lnk" "$INSTDIR\Vidalia\${VIDALIA_EXEC}" "" "$INSTDIR\Vidalia\${VIDALIA_EXEC}" 0  
      CreateShortCut "$SMPROGRAMS\Vidalia\Uninstall.lnk" "$INSTDIR\${BUNDLE_UNINSTALLER}" "" "$INSTDIR\${BUNDLE_UNINSTALLER}" 0
    SectionEnd

    ;--------------------------------
    ; Run At Startup
    Section "Run At Startup" TorCPRunAtStartup
    Section "Run At Startup" VidaliaRunAtStartup
      SectionIn 1 2
      WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${TORCP_NAME}" "$INSTDIR\TorCP\${TORCP_EXEC}"
      WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${VIDALIA_NAME}" "$INSTDIR\Vidalia\${VIDALIA_EXEC}"
    SectionEnd    
SectionGroupEnd

@@ -298,9 +287,9 @@ Section "" end
SectionEnd

Function CustomFinishFn
    IntCmp $bInstallTorCP 1 run_torcp check_tor check_tor
    run_torcp:
        Exec '"$INSTDIR\TorCP\${TORCP_EXEC}"'
    IntCmp $bInstallVidalia 1 run_vidalia check_tor check_tor
    run_vidalia:
        Exec '"$INSTDIR\Vidalia\${VIDALIA_EXEC}"'
        goto check_privoxy
    
    check_tor:
@@ -338,18 +327,18 @@ Section "un.Tor ${TOR_VERSION}" UninstallTor
       DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Tor"
SectionEnd

Section "un.TorCP ${TORCP_VERSION}" UninstallTorCP
Section "un.Vidalia ${VIDALIA_VERSION}" UninstallVidalia
       ; Remove registry keys
       DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Run\${TORCP_NAME}"
       DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${TORCP_NAME}"
       DeleteRegKey HKCU "Software\${TORCP_NAME}"
       DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Run\${VIDALIA_NAME}"
       DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${VIDALIA_NAME}"
       DeleteRegKey HKCU "Software\${VIDALIA_NAME}"

       ; Remove shortcuts, if any
       Delete "$SMPROGRAMS\${TORCP_NAME}\*.*"
       Delete "$SMPROGRAMS\${VIDALIA_NAME}\*.*"

       ; Remove directories used
       RMDir "$SMPROGRAMS\${TORCP_NAME}"
       RMDir /r "$INSTDIR\TorCP"
       RMDir "$SMPROGRAMS\${VIDALIA_NAME}"
       RMDir /r "$INSTDIR\Vidalia"
SectionEnd

Section "un.Privoxy ${PRIVOXY_VERSION}" UninstallPrivoxy
@@ -380,10 +369,10 @@ SectionEnd
  !insertmacro MUI_DESCRIPTION_TEXT ${TorStartMenu} "Add ${TOR_NAME} to your Start menu"
  !insertmacro MUI_DESCRIPTION_TEXT ${TorDesktop} "Add ${TOR_NAME} to your desktop"

  !insertmacro MUI_DESCRIPTION_TEXT ${TorCP} "Install ${TORCP_NAME} ${TORCP_VERSION}"
  !insertmacro MUI_DESCRIPTION_TEXT ${TorCPGroup} "Install ${TORCP_NAME} ${TORCP_VERSION}"
  !insertmacro MUI_DESCRIPTION_TEXT ${TorCPShortcuts} "Add ${TORCP_NAME} to your Start menu"
  !insertmacro MUI_DESCRIPTION_TEXT ${TorCPRunAtStartup} "Run ${TORCP_NAME} at startup"
  !insertmacro MUI_DESCRIPTION_TEXT ${Vidalia} "Install ${VIDALIA_NAME} ${VIDALIA_VERSION}"
  !insertmacro MUI_DESCRIPTION_TEXT ${VidaliaGroup} "Install ${VIDALIA_NAME} ${VIDALIA_VERSION}"
  !insertmacro MUI_DESCRIPTION_TEXT ${VidaliaShortcuts} "Add ${VIDALIA_NAME} to your Start menu"
  !insertmacro MUI_DESCRIPTION_TEXT ${VidaliaRunAtStartup} "Run ${VIDALIA_NAME} at startup"

  !insertmacro MUI_DESCRIPTION_TEXT ${Privoxy} "Install ${PRIVOXY_NAME} ${PRIVOXY_VERSION}"
  !insertmacro MUI_DESCRIPTION_TEXT ${PrivoxyGroup} "Install ${PRIVOXY_NAME} ${PRIVOXY_VERSION}"
@@ -392,6 +381,6 @@ SectionEnd

!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${UninstallTor} "Remove ${TOR_NAME} ${TOR_VERSION} from your computer"
  !insertmacro MUI_DESCRIPTION_TEXT ${UninstallTorCP} "Remove ${TORCP_NAME} ${TORCP_VERSION} from your computer"
  !insertmacro MUI_DESCRIPTION_TEXT ${UninstallVidalia} "Remove ${VIDALIA_NAME} ${VIDALIA_VERSION} from your computer"
  !insertmacro MUI_DESCRIPTION_TEXT ${UninstallPrivoxy} "Remove ${PRIVOXY_NAME} ${PRIVOXY_VERSION} from your computer"
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END

pkg/win32/ioFile.ini

deleted100644 → 0
+0 −27
Changes for pkg/win32/ioFile.ini: 0 added lines, 27 removed lines.
Original line number Diff line number Diff line
[Settings]
NumFields=3
Title=Select Location of Tor's Executable

[Field 1]
Type=GroupBox
Text=Location of Tor's Executable
Left=0
Right=-1
Top=70
Bottom=105

[Field 2]
Type=Label
Text=Please select the path to Tor's executable. This setting\r\ncan also be configured in TorCP's Settings menu. Click Next to continue.
Left=0
Right=-1
Top=0
Bottom=20

[Field 3]
Type=DirRequest
Text=Location of Tor's Executable
Left=10
Right=-15
Top=85
Bottom=98
 No newline at end of file
+17 −63
Changes for pkg/win32/vidalia.nsi: 17 added lines, 63 removed lines.
Original line number Diff line number Diff line
@@ -8,14 +8,13 @@

;---------------------------------
; Global Definitions
!define APPVERSION "0.0.4"
!define PRODVERSION "0.0.4.0" ; Unfortunately, product version must be x.x.x.x
!define APPNAME "TorCP"
!define APPEXEC "torcp.exe"
!define APPDESCRIPTION "Tor Control Panel ${APPVERSION}"
!define AUTHOR "Matt Edman"
!define INSTALLFILE "..\releases\${APPVERSION}\torcp_${APPVERSION}_install.exe"
!packhdr header.dat "upx --best header.dat"
!define APPVERSION "0.0.1-alpha"
!define PRODVERSION "0.0.1.0" ; Unfortunately, product version must be x.x.x.x
!define APPNAME "Vidalia"
!define APPEXEC "vidalia.exe"
!define APPDESCRIPTION "Vidalia Tor Controller ${APPVERSION}"
!define AUTHOR "Matt Edman, Justin Hipple"
!define INSTALLFILE "${APPNAME}_${APPVERSION}_install.exe"


;--------------------------------
@@ -43,6 +42,7 @@ InstallDirRegKey HKCU "Software" "${APPNAME}"
SetOverWrite ifnewer
AutoCloseWindow false
ShowInstDetails show
SetCompressor /SOLID lzma
XPStyle on


@@ -73,7 +73,6 @@ XPStyle on
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
Page custom SelectTorDirectory ValidateTorDirectory
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_WELCOME
@@ -82,66 +81,31 @@ Page custom SelectTorDirectory ValidateTorDirectory
!insertmacro MUI_UNPAGE_FINISH
!insertmacro MUI_LANGUAGE "English"


;-----------------------------------
; Put the InstallOptions file first
ReserveFile "ioFile.ini"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
  
Function .onInit
  !insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioFile.ini"
FunctionEnd

;--------------------------------
; Required Components
Section "${APPNAME} (required)" TorCP
Section "${APPNAME} (required)" Vidalia
  SectionIn RO
  
  ; Set output path to the installation directory.
  SetOutPath $INSTDIR    
  File "..\src\Release\${APPEXEC}"
  File "..\README"
  File "..\CHANGELOG"
  File "..\LICENSE"
  File "..\TODO"

  ; Check if these files exist before trying to overwrite them
  SetOutPath $SYSDIR
  IfFileExists $SYSDIR\mfc70.dll +2 0
    File "..\dll\mfc70.dll"
  IfFileExists $SYSDIR\msvcp70.dll +2 0
    File "..\dll\msvcp70.dll"
  IfFileExists $SYSDIR\msvcr70.dll +2 0
    File "..\dll\msvcr70.dll"  
  File "..\..\bin\${APPEXEC}"
  File "..\..\AUTHORS"
  File "..\..\CHANGELOG"
  File "..\..\LICENSE"
  File "..\..\COPYING"
  File "..\..\README"

  ; Write the installation path into the registry
  WriteRegStr HKCU SOFTWARE\${APPNAME} "Install_Dir" "$INSTDIR"
  
  ; Write the location of Tor's executable
  !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ioFile.ini" "Field 3" "State"
  WriteRegStr HKCU SOFTWARE\${APPNAME} "TorPath" $R0
  
  ; Write the uninstall keys for Windows
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "Tor Control Panel"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME} ${APPVERSION}"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" '"$INSTDIR\uninstall.exe"'
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" 1
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" 1
  WriteUninstaller "uninstall.exe" 
SectionEnd


;--------------------------------
; Check to see if tor.exe exists in selected directory
Function ValidateTorDirectory
  !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ioFile.ini" "Field 3" "State"
  IfFileExists $R0\tor.exe found 0
    MessageBox MB_ICONEXCLAMATION|MB_YESNO "Tor was not found in the specified directory. Continue anyway?" IDYES found IDNO notfound
notfound:    
      Abort
found:    
FunctionEnd


;--------------------------------
; Start Menu Shortcuts
; Optional section (can be disabled by the user)
@@ -161,16 +125,6 @@ Section "Run At Startup" RunAtStartup
SectionEnd


;--------------------------------
; Select location where Tor is
Function SelectTorDirectory
  !insertmacro MUI_HEADER_TEXT "Select the location of Tor's executable" "Choose the folder in which Tor is currently installed"
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioFile.ini" "Field 3" "State" "$PROGRAMFILES\Tor"
  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "ioFile.ini"
FunctionEnd



;--------------------------------
; Uninstaller
Section "Uninstall"  
@@ -192,7 +146,7 @@ SectionEnd


!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${TorCP} "${APPNAME} Executable"
  !insertmacro MUI_DESCRIPTION_TEXT ${Vidalia} "${APPNAME} Executable"
  !insertmacro MUI_DESCRIPTION_TEXT ${Shortcuts} "Add Shortcuts to Start Menu"
  !insertmacro MUI_DESCRIPTION_TEXT ${RunAtStartup} "Automatically start ${APPNAME} at startup"
!insertmacro MUI_FUNCTION_DESCRIPTION_END