| # NSIS stunnel installer by Michal Trojnara 1998-2015 | |
| !include "Sections.nsh" | |
| !ifndef VERSION | |
| !define VERSION 5.22 | |
| !endif | |
| !ifndef ZLIBDIR | |
| !define ZLIBDIR zlib-1.2.8-win32 | |
| !endif | |
| !ifndef OPENSSLDIR | |
| !define OPENSSLDIR openssl-1.0.2d-win32 | |
| !endif | |
| !addplugindir "plugins/SimpleFC" | |
| !addplugindir "plugins/ShellLink/Plugins" | |
| Name "stunnel ${VERSION}" | |
| OutFile "stunnel-${VERSION}-installer.exe" | |
| InstallDir "$PROGRAMFILES\stunnel" | |
| BrandingText "Author: Michal Trojnara" | |
| LicenseData "stunnel.license" | |
| SetCompressor /SOLID LZMA | |
| InstallDirRegKey HKLM "Software\NSIS_stunnel" "Install_Dir" | |
| RequestExecutionLevel admin | |
| Page license | |
| Page components | |
| Page directory | |
| Page instfiles | |
| UninstPage uninstConfirm | |
| UninstPage instfiles | |
| Section "Stunnel Core Files (required)" | |
| SectionIn RO | |
| SetOutPath "$INSTDIR" | |
| # stop the service, exit stunnel | |
| Var /GLOBAL service | |
| StrCpy $service 1 | |
| ReadRegStr $R0 HKLM \ | |
| "Software\Microsoft\Windows NT\CurrentVersion" CurrentVersion | |
| IfErrors skip_service_stop | |
| ExecWait '"$INSTDIR\stunnel.exe" -stop -quiet' $service | |
| skip_service_stop: | |
| ExecWait '"$INSTDIR\stunnel.exe" -exit -quiet' | |
| # write files | |
| SetOverwrite off | |
| File "stunnel.conf" | |
| File "ca-certs.pem" | |
| SetOverwrite on | |
| !cd ".." | |
| !cd "doc" | |
| File "stunnel.html" | |
| !cd ".." | |
| !cd "bin" | |
| !cd "win32" | |
| File "stunnel.exe" | |
| File "stunnel.exe.manifest" | |
| !cd ".." | |
| !cd ".." | |
| !cd ".." | |
| !cd "${ZLIBDIR}" | |
| File "zlib1.dll" | |
| File "zlib1.dll.manifest" | |
| !cd ".." | |
| !cd "${OPENSSLDIR}" | |
| !cd "out32dll" | |
| File "libeay32.dll" | |
| File "libeay32.dll.manifest" | |
| File "ssleay32.dll" | |
| File "ssleay32.dll.manifest" | |
| File "4758cca.dll" | |
| File "4758cca.dll.manifest" | |
| File "aep.dll" | |
| File "aep.dll.manifest" | |
| File "atalla.dll" | |
| File "atalla.dll.manifest" | |
| File "capi.dll" | |
| File "capi.dll.manifest" | |
| File "chil.dll" | |
| File "chil.dll.manifest" | |
| File "cswift.dll" | |
| File "cswift.dll.manifest" | |
| File "gmp.dll" | |
| File "gmp.dll.manifest" | |
| File "gost.dll" | |
| File "gost.dll.manifest" | |
| File "nuron.dll" | |
| File "nuron.dll.manifest" | |
| File "padlock.dll" | |
| File "padlock.dll.manifest" | |
| File "sureware.dll" | |
| File "sureware.dll.manifest" | |
| File "ubsec.dll" | |
| File "ubsec.dll.manifest" | |
| !cd ".." | |
| !cd ".." | |
| !cd "redist" | |
| File "msvcr90.dll" | |
| File "Microsoft.VC90.CRT.manifest" | |
| !cd ".." | |
| !cd "stunnel" | |
| !cd "tools" | |
| # MINGW builds requires libssp-0.dll instead of msvcr90.dll | |
| # add firewall rule | |
| SimpleFC::AddApplication "stunnel (GUI Version)" \ | |
| "$INSTDIR\stunnel.exe" 0 2 "" 1 | |
| Pop $0 # returns error(1)/success(0) | |
| DetailPrint "SimpleFC::AddApplication: $0" | |
| # write uninstaller and its registry entries | |
| WriteUninstaller "uninstall.exe" | |
| WriteRegStr HKLM "Software\NSIS_stunnel" "Install_Dir" "$INSTDIR" | |
| WriteRegStr HKLM \ | |
| "Software\Microsoft\Windows\CurrentVersion\Uninstall\stunnel" \ | |
| "DisplayName" "stunnel" | |
| WriteRegStr HKLM \ | |
| "Software\Microsoft\Windows\CurrentVersion\Uninstall\stunnel" \ | |
| "UninstallString" '"$INSTDIR\uninstall.exe"' | |
| WriteRegDWORD HKLM \ | |
| "Software\Microsoft\Windows\CurrentVersion\Uninstall\stunnel" \ | |
| "NoModify" 1 | |
| WriteRegDWORD HKLM \ | |
| "Software\Microsoft\Windows\CurrentVersion\Uninstall\stunnel" \ | |
| "NoRepair" 1 | |
| # start the service | |
| IntCmp $service 0 lbl_start_service lbl_skip_service lbl_skip_service | |
| lbl_start_service: | |
| ExecWait '"$INSTDIR\stunnel.exe" -start -quiet' | |
| lbl_skip_service: | |
| SectionEnd | |
| Section "Self-signed Certificate Tools" sectionCA | |
| SetOutPath "$INSTDIR" | |
| !cd ".." | |
| !cd ".." | |
| !cd "${OPENSSLDIR}" | |
| !cd "out32dll" | |
| File "openssl.exe" | |
| File "openssl.exe.manifest" | |
| !cd ".." | |
| !cd ".." | |
| !cd "stunnel" | |
| !cd "tools" | |
| File "stunnel.cnf" | |
| IfSilent lbl_skip_new_pem | |
| IfFileExists "$INSTDIR\stunnel.pem" lbl_skip_new_pem | |
| ReadEnvStr $0 "HOME" | |
| StrCmp $0 "" lbl_home_defined 0 | |
| System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("HOME", "$INSTDIR").r0' | |
| lbl_home_defined: | |
| ExecWait '"$INSTDIR\openssl.exe" req -new -x509 -days 365 -config stunnel.cnf -out stunnel.pem -keyout stunnel.pem' | |
| lbl_skip_new_pem: | |
| SectionEnd | |
| Section "Terminal Version of stunnel" sectionTERM | |
| SetOutPath "$INSTDIR" | |
| !cd ".." | |
| !cd "bin" | |
| !cd "win32" | |
| File "tstunnel.exe" | |
| File "tstunnel.exe.manifest" | |
| !cd ".." | |
| !cd ".." | |
| !cd "tools" | |
| # add firewall rule | |
| SimpleFC::AddApplication "stunnel (Terminal Version)" \ | |
| "$INSTDIR\tstunnel.exe" 0 2 "" 1 | |
| Pop $0 # returns error(1)/success(0) | |
| DetailPrint "SimpleFC::AddApplication: $0" | |
| SectionEnd | |
| Section "Start Menu Shortcuts" | |
| SetShellVarContext all | |
| CreateDirectory "$SMPROGRAMS\stunnel" | |
| # remove old links | |
| Delete "$SMPROGRAMS\stunnel\*.lnk" | |
| Delete "$SMPROGRAMS\stunnel\*.url" | |
| # main link | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel GUI Start.lnk" \ | |
| "$INSTDIR\stunnel.exe" "" "$INSTDIR\stunnel.exe" 0 | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel GUI Stop.lnk" \ | |
| "$INSTDIR\stunnel.exe" "-exit" "$INSTDIR\stunnel.exe" 0 | |
| # tstunnel | |
| SectionGetFlags ${sectionTERM} $0 | |
| IntOp $0 $0 & ${SF_SELECTED} | |
| IntCmp $0 0 lbl_noTERM | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel Terminal Start.lnk" \ | |
| "$INSTDIR\tstunnel.exe" "" "$INSTDIR\tstunnel.exe" 0 | |
| lbl_noTERM: | |
| # NT service | |
| ClearErrors | |
| ReadRegStr $R0 HKLM \ | |
| "Software\Microsoft\Windows NT\CurrentVersion" CurrentVersion | |
| IfErrors skip_service_links | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel Service Install.lnk" \ | |
| "$INSTDIR\stunnel.exe" "-install" "$INSTDIR\stunnel.exe" 0 | |
| ShellLink::SetRunAsAdministrator \ | |
| "$SMPROGRAMS\stunnel\stunnel Service Install.lnk" | |
| Pop $0 # returns error(-1)/success(0) | |
| DetailPrint "ShellLink::SetRunAsAdministrator: $0" | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel Service Uninstall.lnk" \ | |
| "$INSTDIR\stunnel.exe" "-uninstall" "$INSTDIR\stunnel.exe" 0 | |
| ShellLink::SetRunAsAdministrator \ | |
| "$SMPROGRAMS\stunnel\stunnel Service Uninstall.lnk" | |
| Pop $0 # returns error(-1)/success(0) | |
| DetailPrint "ShellLink::SetRunAsAdministrator: $0" | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel Service Start.lnk" \ | |
| "$INSTDIR\stunnel.exe" "-start" "$INSTDIR\stunnel.exe" 0 | |
| ShellLink::SetRunAsAdministrator \ | |
| "$SMPROGRAMS\stunnel\stunnel Service Start.lnk" | |
| Pop $0 # returns error(-1)/success(0) | |
| DetailPrint "ShellLink::SetRunAsAdministrator: $0" | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel Service Stop.lnk" \ | |
| "$INSTDIR\stunnel.exe" "-stop" "$INSTDIR\stunnel.exe" 0 | |
| ShellLink::SetRunAsAdministrator \ | |
| "$SMPROGRAMS\stunnel\stunnel Service Stop.lnk" | |
| Pop $0 # returns error(-1)/success(0) | |
| DetailPrint "ShellLink::SetRunAsAdministrator: $0" | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel Service Configuration File Reload.lnk" \ | |
| "$INSTDIR\stunnel.exe" "-reload" "$INSTDIR\stunnel.exe" 0 | |
| ShellLink::SetRunAsAdministrator \ | |
| "$SMPROGRAMS\stunnel\stunnel Service Configuration File Reload.lnk" | |
| Pop $0 # returns error(-1)/success(0) | |
| DetailPrint "ShellLink::SetRunAsAdministrator: $0" | |
| CreateShortCut "$SMPROGRAMS\stunnel\stunnel Service Log File Reopen.lnk" \ | |
| "$INSTDIR\stunnel.exe" "-reopen" "$INSTDIR\stunnel.exe" 0 | |
| ShellLink::SetRunAsAdministrator \ | |
| "$SMPROGRAMS\stunnel\stunnel Service Log File Reopen.lnk" | |
| Pop $0 # returns error(-1)/success(0) | |
| DetailPrint "ShellLink::SetRunAsAdministrator: $0" | |
| skip_service_links: | |
| # edit config file | |
| CreateShortCut "$SMPROGRAMS\stunnel\Edit stunnel.conf.lnk" \ | |
| "notepad.exe" "$INSTDIR\stunnel.conf" "notepad.exe" 0 | |
| ShellLink::SetRunAsAdministrator \ | |
| "$SMPROGRAMS\stunnel\Edit stunnel.conf.lnk" | |
| Pop $0 # returns error(-1)/success(0) | |
| DetailPrint "ShellLink::SetRunAsAdministrator: $0" | |
| SectionGetFlags ${sectionCA} $0 | |
| IntOp $0 $0 & ${SF_SELECTED} | |
| IntCmp $0 0 lbl_noCA | |
| # OpenSSL shell | |
| CreateShortCut "$SMPROGRAMS\stunnel\OpenSSL Shell.lnk" \ | |
| "$INSTDIR\openssl.exe" "" "$INSTDIR\openssl.exe" 0 | |
| # make stunnel.pem | |
| CreateShortCut "$SMPROGRAMS\stunnel\Build Self-signed stunnel.pem.lnk" \ | |
| "$INSTDIR\openssl.exe" \ | |
| "req -new -x509 -days 365 -config stunnel.cnf -out stunnel.pem -keyout stunnel.pem" | |
| ShellLink::SetRunAsAdministrator \ | |
| "$SMPROGRAMS\stunnel\\Build Self-signed stunnel.pem.lnk" | |
| Pop $0 # returns error(-1)/success(0) | |
| DetailPrint "ShellLink::SetRunAsAdministrator: $0" | |
| lbl_noCA: | |
| # help/uninstall | |
| WriteINIStr "$SMPROGRAMS\stunnel\Manual.url" "InternetShortcut" \ | |
| "URL" "file://$INSTDIR/stunnel.html" | |
| CreateShortCut "$SMPROGRAMS\stunnel\Uninstall stunnel.lnk" \ | |
| "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 | |
| SectionEnd | |
| Section "Desktop Shortcut" | |
| SetShellVarContext all | |
| Delete "$DESKTOP\stunnel.lnk" | |
| CreateShortCut "$DESKTOP\stunnel.lnk" \ | |
| "$INSTDIR\stunnel.exe" "" "$INSTDIR\stunnel.exe" 0 | |
| SectionEnd | |
| Section /o "Debugging Symbols" | |
| SetOutPath "$INSTDIR" | |
| !cd ".." | |
| !cd "bin" | |
| !cd "win32" | |
| File "stunnel.pdb" | |
| File "tstunnel.pdb" | |
| !cd ".." | |
| !cd ".." | |
| !cd ".." | |
| !cd "${ZLIBDIR}" | |
| File "zlib1.pdb" | |
| !cd ".." | |
| !cd "${OPENSSLDIR}" | |
| !cd "out32dll" | |
| File "libeay32.pdb" | |
| File "ssleay32.pdb" | |
| File "openssl.pdb" | |
| File "4758cca.pdb" | |
| File "aep.pdb" | |
| File "atalla.pdb" | |
| File "capi.pdb" | |
| File "chil.pdb" | |
| File "cswift.pdb" | |
| File "gmp.pdb" | |
| File "gost.pdb" | |
| File "nuron.pdb" | |
| File "padlock.pdb" | |
| File "sureware.pdb" | |
| File "ubsec.pdb" | |
| !cd ".." | |
| !cd ".." | |
| !cd "stunnel" | |
| !cd "tools" | |
| SectionEnd | |
| Section "Uninstall" | |
| ClearErrors | |
| # stop and remove the service, exit stunnel | |
| ReadRegStr $R0 HKLM \ | |
| "Software\Microsoft\Windows NT\CurrentVersion" CurrentVersion | |
| IfErrors skip_service_uninstall | |
| ExecWait '"$INSTDIR\stunnel.exe" -stop -quiet' | |
| ExecWait '"$INSTDIR\stunnel.exe" -uninstall -quiet' | |
| skip_service_uninstall: | |
| ExecWait '"$INSTDIR\stunnel.exe" -exit -quiet' | |
| # remove stunnel folder | |
| Delete "$INSTDIR\stunnel.conf" | |
| Delete "$INSTDIR\ca-certs.pem" | |
| Delete "$INSTDIR\stunnel.pem" | |
| Delete "$INSTDIR\stunnel.exe" | |
| Delete "$INSTDIR\stunnel.exe.manifest" | |
| Delete "$INSTDIR\stunnel.pdb" | |
| Delete "$INSTDIR\tstunnel.exe" | |
| Delete "$INSTDIR\tstunnel.exe.manifest" | |
| Delete "$INSTDIR\stunnel.cnf" | |
| Delete "$INSTDIR\openssl.exe" | |
| Delete "$INSTDIR\openssl.exe.manifest" | |
| Delete "$INSTDIR\openssl.pdb" | |
| Delete "$INSTDIR\Microsoft.VC90.CRT.manifest" | |
| Delete "$INSTDIR\libeay32.dll" | |
| Delete "$INSTDIR\libeay32.dll.manifest" | |
| Delete "$INSTDIR\libeay32.pdb" | |
| Delete "$INSTDIR\ssleay32.dll" | |
| Delete "$INSTDIR\ssleay32.dll.manifest" | |
| Delete "$INSTDIR\ssleay32.pdb" | |
| Delete "$INSTDIR\4758cca.dll" | |
| Delete "$INSTDIR\4758cca.dll.manifest" | |
| Delete "$INSTDIR\4758cca.pdb" | |
| Delete "$INSTDIR\aep.dll" | |
| Delete "$INSTDIR\aep.dll.manifest" | |
| Delete "$INSTDIR\aep.pdb" | |
| Delete "$INSTDIR\atalla.dll" | |
| Delete "$INSTDIR\atalla.dll.manifest" | |
| Delete "$INSTDIR\atalla.pdb" | |
| Delete "$INSTDIR\capi.dll" | |
| Delete "$INSTDIR\capi.dll.manifest" | |
| Delete "$INSTDIR\capi.pdb" | |
| Delete "$INSTDIR\chil.dll" | |
| Delete "$INSTDIR\chil.dll.manifest" | |
| Delete "$INSTDIR\chil.pdb" | |
| Delete "$INSTDIR\cswift.dll" | |
| Delete "$INSTDIR\cswift.dll.manifest" | |
| Delete "$INSTDIR\cswift.pdb" | |
| Delete "$INSTDIR\gmp.dll" | |
| Delete "$INSTDIR\gmp.dll.manifest" | |
| Delete "$INSTDIR\gmp.pdb" | |
| Delete "$INSTDIR\gost.dll" | |
| Delete "$INSTDIR\gost.dll.manifest" | |
| Delete "$INSTDIR\gost.pdb" | |
| Delete "$INSTDIR\nuron.dll" | |
| Delete "$INSTDIR\nuron.dll.manifest" | |
| Delete "$INSTDIR\nuron.pdb" | |
| Delete "$INSTDIR\padlock.dll" | |
| Delete "$INSTDIR\padlock.dll.manifest" | |
| Delete "$INSTDIR\padlock.pdb" | |
| Delete "$INSTDIR\sureware.dll" | |
| Delete "$INSTDIR\sureware.dll.manifest" | |
| Delete "$INSTDIR\sureware.pdb" | |
| Delete "$INSTDIR\ubsec.dll" | |
| Delete "$INSTDIR\ubsec.dll.manifest" | |
| Delete "$INSTDIR\ubsec.pdb" | |
| Delete "$INSTDIR\stunnel.html" | |
| Delete "$INSTDIR\uninstall.exe" | |
| RMDir "$INSTDIR" | |
| # remove menu shortcuts | |
| SetShellVarContext all | |
| Delete "$DESKTOP\stunnel.lnk" | |
| Delete "$SMPROGRAMS\stunnel\*.lnk" | |
| Delete "$SMPROGRAMS\stunnel\*.url" | |
| RMDir "$SMPROGRAMS\stunnel" | |
| # remove firewall rules | |
| SimpleFC::RemoveApplication "$INSTDIR\stunnel.exe" | |
| Pop $0 # returns error(1)/success(0) | |
| DetailPrint "SimpleFC::RemoveApplication: $0" | |
| SimpleFC::RemoveApplication "$INSTDIR\tstunnel.exe" | |
| Pop $0 # returns error(1)/success(0) | |
| DetailPrint "SimpleFC::RemoveApplication: $0" | |
| # remove uninstaller registry entires | |
| DeleteRegKey HKLM \ | |
| "Software\Microsoft\Windows\CurrentVersion\Uninstall\stunnel" | |
| DeleteRegKey HKLM "Software\NSIS_stunnel" | |
| SectionEnd | |
| # end of stunnel.nsi |