--- /dev/null
+;
+; File:
+; $Source: /cvsroot/ijbswa/winsetup/privoxy_winthreads.nsi,v $
+;
+; Purpose:
+; NSIS script to make the Privoxy installer
+;
+; This .NSI script is designed for NSIS v2.24+
+;
+; Get NSIS from: http://www.nullsoft.com/free/nsis/
+;
+; Copyright:
+; Written by and Copyright (C) 2007-2009 the Privoxy team.
+; http://www.privoxy.org/
+;
+; This script originally written by and Copyright (C) 2002
+; Jonathan Foster
+;
+; This program is free software; you can redistribute it
+; and/or modify it under the terms of the GNU General
+; Public License as published by the Free Software
+; Foundation; either version 2 of the License, or (at
+; your option) any later version.
+;
+; This program is distributed in the hope that it will
+; be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A
+; PARTICULAR PURPOSE. See the GNU General Public
+; License for more details.
+;
+; The GNU General Public License should be included with
+; this file. If not, you can view it at
+; http://www.gnu.org/copyleft/gpl.html
+; or write to the Free Software Foundation, Inc., 59
+; Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+;
+
+!include WinMessages.nsh ; to send close message to Privoxy process
+
+!define NL "$\r$\n"
+
+Var /GLOBAL UpdateExisting
+
+;win7 RequestExecutionLevel admin
+
+
+; Close Privoxy and wait for termination
+;
+!macro ClosePrivoxy
+ ;Close privoxy.exe
+ FindWindow $R0 "PrivoxyLogOwner"
+ IntCmpU $R0 0 NoPrivoxyRunning 0 0
+ SendMessage $R0 ${WM_CLOSE} 0 0
+ ; wait for close
+ StrCpy $R1 0
+CheckWindowClosed:
+ Sleep 200 ; avoid file in use error
+ FindWindow $R0 "PrivoxyLogOwner"
+ IntCmpU $R0 0 NoPrivoxyRunning 0 0
+ IntOp $R1 $R1 + 1
+ IntCmp $R1 20 0 CheckWindowClosed 0
+ Sleep 200 ; avoid file in use error
+NoPrivoxyRunning:
+!macroend
+
+
+; create a backup file if file exists, set $UpdateExisting on existing files
+;
+!macro BackupOLD Name BackupName
+ !define UniqueID ${__LINE__}
+
+ IfFileExists "$INSTDIR\${Name}" 0 skip_${UniqueID}
+ StrCpy $UpdateExisting 1
+ delete "$INSTDIR\${BackupName}"
+ rename "$INSTDIR\${Name}" "$INSTDIR\${BackupName}"
+skip_${UniqueID}:
+
+ !undef UniqueID
+!macroend
+
+
+; check file, write new one to different target there is one, set $UpdateExisting on existing files
+;
+!macro KeepCur Name DefaultName SrcDir
+ !define UniqueID ${__LINE__}
+
+ IfFileExists "$INSTDIR\${Name}" 0 new_${UniqueID}
+ StrCpy $UpdateExisting 1
+ delete "$INSTDIR\${DefaultName}"
+ File "/oname=${DefaultName}" "${SrcDir}${Name}"
+ goto done_${UniqueID}
+
+new_${UniqueID}:
+ File "${SrcDir}${Name}"
+
+done_${UniqueID}:
+
+ !undef UniqueID
+!macroend
+
+
+Name "Privoxy"
+OutFile "privoxy_setup.exe"
+
+BGGradient off
+
+; Some default compiler settings (uncomment and change at will):
+SetCompress auto ; (can be off or force)
+SetCompressor /FINAL /SOLID lzma
+SetDatablockOptimize on
+CRCCheck on
+AutoCloseWindow true ; (can be true for the window go away automatically at end)
+ShowInstDetails nevershow ; (can be show to have them shown, or nevershow to disable)
+SetDateSave on ; (can be on to have files restored to their orginal date)
+; SetOverwrite ifnewer ; (files are only overwritten if the existing file is older than the new file)
+SetOverwrite on ; install package files over-write existing files regardless of date
+
+Icon "privoxy.ico"
+UninstallIcon "uninstall_privoxy.ico"
+
+#LicenseText "Privoxy is distributed under the GNU General Public License. Please read it before you install."
+#LicenseData "build/LICENSE.txt"
+
+InstallDir "$PROGRAMFILES\Privoxy"
+;InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Privoxy.org\Privoxy" ""
+;DirShow show ; (make this hide to not let the user change it)
+;DirShow doesn't currently work.
+DirText "Select the directory to install Privoxy in:"
+
+ComponentText "Please select how you want to start Privoxy:"
+
+Section "" ; (default section)
+ StrCpy $UpdateExisting 0
+
+ ; Close privoxy.exe if it is running (user is upgrading) to prevent in-use errors.
+ !insertmacro ClosePrivoxy
+
+ ; add files / whatever that need to be installed here.
+ SetOutPath "$INSTDIR"
+
+ ; save files the user might have changed
+ ; config.txt match-all.action trust.txt
+ ;
+ !insertmacro BackupOLD "config.txt" "old_config.txt"
+ !insertmacro BackupOLD "match-all.action" "old_match-all.action";
+ !insertmacro BackupOLD "trust.txt" "old_trust.txt"
+
+ ;File /r build\*.*
+
+ ; leave user.action and user.filter alone if they exist
+ ;
+ !insertmacro KeepCur "user.action" "clean_user.action" "build\"
+ !insertmacro KeepCur "user.filter" "clean_user.filter" "build\"
+ ; exclude all files handled by KeepCur
+ File /r /x CVS /x user.action /x user.filter build\*.*
+
+ ;WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Privoxy.org\Privoxy" "" "$INSTDIR"
+ WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Privoxy" "DisplayName" "Privoxy (remove only)"
+ WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Privoxy" "UninstallString" '"$INSTDIR\privoxy_uninstall.exe"'
+
+ WriteRegStr HKEY_CLASSES_ROOT "PrivoxyActionFile\shell\open\command" "" 'Notepad.exe "%1"'
+ WriteRegStr HKEY_CLASSES_ROOT ".action" "" "PrivoxyActionFile"
+ WriteRegStr HKEY_CLASSES_ROOT "PrivoxyFilterFile\shell\open\command" "" 'Notepad.exe "%1"'
+ WriteRegStr HKEY_CLASSES_ROOT ".filter" "" "PrivoxyFilterFile"
+
+ WriteUninstaller "privoxy_uninstall.exe"
+SectionEnd
+
+Section "Add to Start Menu"
+ SetShellVarContext all ; (Add to "All Users" Start Menu if possible)
+ RMDir /r "$SMPROGRAMS\Privoxy"
+ CreateDirectory "$SMPROGRAMS\Privoxy"
+ CreateShortCut "$SMPROGRAMS\Privoxy\Privoxy.lnk" "$INSTDIR\privoxy.exe"
+ WriteINIStr "$SMPROGRAMS\Privoxy\Web-based Configuration.url" "InternetShortcut" "URL" "http://config.privoxy.org/"
+ CreateShortCut "$SMPROGRAMS\Privoxy\Web-based Feedback.lnk" "$INSTDIR\doc\user-manual\contact.html"
+ CreateDirectory "$SMPROGRAMS\Privoxy\Edit Config"
+ CreateShortCut "$SMPROGRAMS\Privoxy\Edit Config\Main Configuration.lnk" "Notepad.exe" '"$INSTDIR\config.txt"'
+ CreateShortCut "$SMPROGRAMS\Privoxy\Edit Config\Default Actions.lnk" "Notepad.exe" '"$INSTDIR\default.action"'
+ CreateShortCut "$SMPROGRAMS\Privoxy\Edit Config\User Actions.lnk" "Notepad.exe" '"$INSTDIR\user.action"'
+ CreateShortCut "$SMPROGRAMS\Privoxy\Edit Config\Filters.lnk" "Notepad.exe" '"$INSTDIR\default.filter"'
+ CreateShortCut "$SMPROGRAMS\Privoxy\Edit Config\Trust list.lnk" "Notepad.exe" '"$INSTDIR\trust.txt"'
+ CreateDirectory "$SMPROGRAMS\Privoxy\Documentation"
+ CreateShortCut "$SMPROGRAMS\Privoxy\Documentation\User Manual.lnk" "$INSTDIR\doc\user-manual\index.html"
+ CreateShortCut "$SMPROGRAMS\Privoxy\Documentation\Frequently Asked Questions.lnk" "$INSTDIR\doc\faq\index.html"
+ CreateShortCut "$SMPROGRAMS\Privoxy\Documentation\Credits.lnk" "Notepad.exe" '"$INSTDIR\AUTHORS.txt"'
+ CreateShortCut "$SMPROGRAMS\Privoxy\Documentation\License.lnk" "Notepad.exe" '"$INSTDIR\LICENSE.txt"'
+ CreateShortCut "$SMPROGRAMS\Privoxy\Documentation\ReadMe file.lnk" "Notepad.exe" '"$INSTDIR\README.txt"'
+ WriteINIStr "$SMPROGRAMS\Privoxy\Documentation\Web Site.url" "InternetShortcut" "URL" "http://privoxy.org/"
+ CreateShortCut "$SMPROGRAMS\Privoxy\Uninstall Privoxy.lnk" "$INSTDIR\privoxy_uninstall.exe"
+SectionEnd
+
+
+Section "Run automatically at startup"
+ CreateShortCut "$SMSTARTUP\Privoxy.lnk" "$INSTDIR\privoxy.exe" "" "" 0 SW_SHOWMINIMIZED
+SectionEnd
+
+
+Function .onInstSuccess
+ ; on successful install, show message then start it
+ IntCmp $UpdateExisting 0 0 updated updated
+ MessageBox MB_YESNO|MB_DEFBUTTON1|MB_ICONQUESTION "Privoxy has been installed.${NL}${NL}Start Privoxy now?" /SD IDNO IDYES execprivoxy IDNO done
+ goto done
+updated:
+ MessageBox MB_YESNO|MB_DEFBUTTON1|MB_ICONEXCLAMATION "Privoxy has been updated.${NL}Don't forget to convert configuration from the 'old*' files!${NL}${NL}Start Privoxy now?" /SD IDNO IDYES execprivoxy IDNO done
+ goto done
+execprivoxy:
+ ; run privoxy after installation
+ SetOutPath "$INSTDIR"
+
+ Exec "$INSTDIR\privoxy.exe"
+done:
+FunctionEnd
+
+
+; begin uninstall settings/section. The UninstallText line must be before the Section header.
+;
+UninstallText "This will uninstall Privoxy from your system"
+Section Uninstall
+ SetShellVarContext all ; (Remove from "All Users" Start Menu if possible)
+
+ ;DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Privoxy.org\Privoxy"
+ DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Privoxy"
+
+ DeleteRegKey HKEY_CLASSES_ROOT ".action"
+ DeleteRegKey HKEY_CLASSES_ROOT "PrivoxyActionFile"
+ DeleteRegKey HKEY_CLASSES_ROOT ".filter"
+ DeleteRegKey HKEY_CLASSES_ROOT "PrivoxyFilterFile"
+
+ Delete "$SMSTARTUP\Privoxy.lnk"
+
+ !insertmacro ClosePrivoxy
+
+ RMDir /r "$SMPROGRAMS\Privoxy"
+ RMDir /r "$INSTDIR"
+SectionEnd
+
+; eof