1693 lines
46 KiB
Plaintext
1693 lines
46 KiB
Plaintext
;----------------------------------------------------------------------------
|
|
; Sandboxie Installer
|
|
;----------------------------------------------------------------------------
|
|
|
|
SetCompressor /SOLID /FINAL lzma
|
|
|
|
!include "MUI.nsh"
|
|
!include "IsWow64.nsh"
|
|
!include "Registry.nsh"
|
|
!include "Cmdline.nsh"
|
|
!include "IsAdmin.nsh"
|
|
!include "Library.nsh"
|
|
!include "WordFunc.nsh"
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Extract Information from my_version.h
|
|
;----------------------------------------------------------------------------
|
|
|
|
!tempfile TMPVERFILE
|
|
!system 'ParseVersion.bat "..\common\my_version.h" "${TMPVERFILE}"'
|
|
!include "${TMPVERFILE}"
|
|
!delfile "${TMPVERFILE}"
|
|
!undef TMPVERFILE
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Global Defines
|
|
;----------------------------------------------------------------------------
|
|
; these are the build-time config settings. Need to be cmd line args or something better.
|
|
; pick either 32 or 64 bit
|
|
;!define _BUILDARCH Win32
|
|
;!define _BUILDARCH x64
|
|
!define _BUILDARCH "$%SBIE_BUILDARCH%"
|
|
|
|
|
|
; uncomment this line if you want to make the special versions that download VC Redist
|
|
;!define INCLUDE_VCREDIST_DNLD
|
|
|
|
!define BIN_ROOT_BASE "${SBIE_INSTALLER_PATH}"
|
|
|
|
;!if "${_BUILDARCH}" == "x64"
|
|
; !define _W7DRV_COMPAT "$%SbieVer%.x64"
|
|
;!else
|
|
; !define _W7DRV_COMPAT "$%SbieVer%.x86"
|
|
;!endif
|
|
|
|
;!define SBIEDRV_SYS4 "${SBIEDRV_SYS}.rc4"
|
|
;!define SBIEDRV_SYSX "${SBIEDRV_SYS}.w10"
|
|
|
|
!define OUTFILE_BOTH "${PRODUCT_NAME}Install.exe"
|
|
!define NAME_Win32 "${PRODUCT_FULL_NAME} ${VERSION} (32-bit)"
|
|
!ifdef INCLUDE_VCREDIST_DNLD
|
|
!define OUTFILE_Win32 "${PRODUCT_NAME}Install32_VCRedist.exe"
|
|
!else
|
|
!define OUTFILE_Win32 "${PRODUCT_NAME}Install32.exe"
|
|
!endif
|
|
!define ARCH_Win32 "Win32"
|
|
!define BIN_ROOT_Win32 "${BIN_ROOT_BASE}\Win32\SbieRelease"
|
|
|
|
!define NAME_x64 "${PRODUCT_FULL_NAME} ${VERSION} (64-bit)"
|
|
!ifdef INCLUDE_VCREDIST_DNLD
|
|
!define OUTFILE_x64 "${PRODUCT_NAME}Install64_VCRedist.exe"
|
|
!else
|
|
!define OUTFILE_x64 "${PRODUCT_NAME}Install64.exe"
|
|
!endif
|
|
!define ARCH_x64 "x64"
|
|
!define BIN_ROOT_x64 "${BIN_ROOT_BASE}\x64\SbieRelease"
|
|
|
|
!define ARCH ${ARCH_${_BUILDARCH}}
|
|
!define BIN_ROOT ${BIN_ROOT_${_BUILDARCH}}
|
|
|
|
!define VCRedist64SrcLocation "..\Build\Support\x64\vc_redist.x64.exe"
|
|
!define VCRedist32SrcLocation "..\Build\Support\vc_redist.x86.exe"
|
|
|
|
Section binroot
|
|
DetailPrint "binary root ${BIN_ROOT}"
|
|
SectionEnd
|
|
|
|
Name "${NAME_${_BUILDARCH}}"
|
|
|
|
OutFile "${BIN_ROOT}\..\${OUTFILE_${_BUILDARCH}}"
|
|
|
|
InstallDir "(na)"
|
|
|
|
SpaceTexts "none"
|
|
|
|
ShowInstDetails nevershow
|
|
|
|
RequestExecutionLevel admin
|
|
|
|
;----------------------------------------------------------------------------
|
|
;
|
|
;----------------------------------------------------------------------------
|
|
|
|
VIProductVersion "${VERSION}.0.0"
|
|
|
|
VIAddVersionKey "ProductName" "${PRODUCT_FULL_NAME}"
|
|
VIAddVersionKey "CompanyName" "${COMPANY_NAME}"
|
|
VIAddVersionKey "LegalCopyright" "${COPYRIGHT_STRING}"
|
|
VIAddVersionKey "FileDescription" "${PRODUCT_NAME} Installer"
|
|
VIAddVersionKey "FileVersion" "${VERSION}"
|
|
VIAddVersionKey "ProductVersion" "${VERSION}"
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Pages
|
|
;----------------------------------------------------------------------------
|
|
|
|
!define MUI_ICON "..\apps\res\sandbox-full.ico"
|
|
|
|
!define MUI_PAGE_CUSTOMFUNCTION_PRE "SkipLicensePage"
|
|
!insertmacro MUI_PAGE_LICENSE "LICENSE.TXT"
|
|
|
|
Page custom InstallTypePage
|
|
!define MUI_PAGE_CUSTOMFUNCTION_PRE "SkipDirectoryPage"
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
|
|
!define MUI_PAGE_CUSTOMFUNCTION_SHOW "SetHeaderForRemove"
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
|
|
Page custom DriverPage
|
|
|
|
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
|
!define MUI_PAGE_CUSTOMFUNCTION_PRE "DisableBackButton"
|
|
!define MUI_FINISHPAGE_TITLE_3LINES
|
|
!insertmacro MUI_PAGE_FINISH
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Languages
|
|
;----------------------------------------------------------------------------
|
|
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
!insertmacro MUI_LANGUAGE "Albanian"
|
|
!insertmacro MUI_LANGUAGE "Arabic"
|
|
!insertmacro MUI_LANGUAGE "Bulgarian"
|
|
!insertmacro MUI_LANGUAGE "SimpChinese"
|
|
!insertmacro MUI_LANGUAGE "TradChinese"
|
|
!insertmacro MUI_LANGUAGE "Croatian"
|
|
!insertmacro MUI_LANGUAGE "Czech"
|
|
!insertmacro MUI_LANGUAGE "Danish"
|
|
!insertmacro MUI_LANGUAGE "Dutch"
|
|
!insertmacro MUI_LANGUAGE "Estonian"
|
|
!insertmacro MUI_LANGUAGE "Farsi"
|
|
!insertmacro MUI_LANGUAGE "Finnish"
|
|
!insertmacro MUI_LANGUAGE "French"
|
|
!insertmacro MUI_LANGUAGE "German"
|
|
!insertmacro MUI_LANGUAGE "Greek"
|
|
!insertmacro MUI_LANGUAGE "Hebrew"
|
|
!insertmacro MUI_LANGUAGE "Hungarian"
|
|
!insertmacro MUI_LANGUAGE "Italian"
|
|
!insertmacro MUI_LANGUAGE "Indonesian"
|
|
!insertmacro MUI_LANGUAGE "Japanese"
|
|
!insertmacro MUI_LANGUAGE "Korean"
|
|
!insertmacro MUI_LANGUAGE "Macedonian"
|
|
!insertmacro MUI_LANGUAGE "Polish"
|
|
!insertmacro MUI_LANGUAGE "PortugueseBr"
|
|
!insertmacro MUI_LANGUAGE "Portuguese"
|
|
!insertmacro MUI_LANGUAGE "Russian"
|
|
!insertmacro MUI_LANGUAGE "Slovak"
|
|
!insertmacro MUI_LANGUAGE "Spanish"
|
|
!insertmacro MUI_LANGUAGE "Swedish"
|
|
!insertmacro MUI_LANGUAGE "Turkish"
|
|
!insertmacro MUI_LANGUAGE "Ukrainian"
|
|
|
|
;!insertmacro MUI_LANGUAGE "Norwegian"
|
|
;!include "MyItalian.nlf"
|
|
|
|
!macro MyLanguage MYLANG MYCP
|
|
!system "..\tools\iconv\iconv -f UTF-16 -t ${MYCP} ..\msgs\SbieRelease\NsisText_${MYLANG}.txt > ansi-My${MYLANG}.nlf"
|
|
!include "ansi-My${MYLANG}.nlf"
|
|
!delfile "ansi-My${MYLANG}.nlf"
|
|
|
|
!macroend
|
|
|
|
!insertmacro MyLanguage "English" LATIN1
|
|
!insertmacro MyLanguage "Albanian" LATIN1
|
|
!insertmacro MyLanguage "Arabic" CP1256
|
|
!insertmacro MyLanguage "Bulgarian" CP1251
|
|
!insertmacro MyLanguage "SimpChinese" CP936
|
|
!insertmacro MyLanguage "TradChinese" CP950
|
|
!insertmacro MyLanguage "Croatian" CP1250
|
|
!insertmacro MyLanguage "Czech" CP1250
|
|
!insertmacro MyLanguage "Danish" CP865
|
|
!insertmacro MyLanguage "Dutch" LATIN1
|
|
!insertmacro MyLanguage "Estonian" LATIN1
|
|
!insertmacro MyLanguage "Farsi" CP1256
|
|
!insertmacro MyLanguage "Finnish" LATIN1
|
|
!insertmacro MyLanguage "French" LATIN1
|
|
!insertmacro MyLanguage "German" LATIN1
|
|
!insertmacro MyLanguage "Greek" CP1253
|
|
!insertmacro MyLanguage "Hebrew" CP1255
|
|
!insertmacro MyLanguage "Hungarian" CP1250
|
|
!insertmacro MyLanguage "Italian" LATIN1
|
|
!insertmacro MyLanguage "Indonesian" LATIN1
|
|
!insertmacro MyLanguage "Japanese" CP932
|
|
!insertmacro MyLanguage "Korean" CP949
|
|
!insertmacro MyLanguage "Macedonian" CP1251
|
|
!insertmacro MyLanguage "Polish" CP1250
|
|
!insertmacro MyLanguage "PortugueseBr" LATIN1
|
|
!insertmacro MyLanguage "Portuguese" LATIN1
|
|
!insertmacro MyLanguage "Russian" CP1251
|
|
!insertmacro MyLanguage "Slovak" CP1250
|
|
!insertmacro MyLanguage "Spanish" LATIN1
|
|
!insertmacro MyLanguage "Swedish" LATIN1
|
|
!insertmacro MyLanguage "Turkish" CP1254
|
|
!insertmacro MyLanguage "Ukrainian" CP1251
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Reserve Files
|
|
;----------------------------------------------------------------------------
|
|
|
|
ReserveFile "InstallType.ini"
|
|
|
|
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
|
|
|
|
ReserveFile "Warning.ini"
|
|
|
|
ReserveFile "${BIN_ROOT}\KmdUtil.Exe"
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Global Variables
|
|
;----------------------------------------------------------------------------
|
|
|
|
Var InstallType
|
|
Var LaunchControl
|
|
Var MustReboot
|
|
Var BundledInstall
|
|
Var DeleteSandboxieIni
|
|
;Var Win7Driver
|
|
|
|
;----------------------------------------------------------------------------
|
|
; macro InstallSystemDll
|
|
;----------------------------------------------------------------------------
|
|
|
|
!macro InstallSystemDll DllName Is64Bit
|
|
|
|
IfFileExists "$SYSDIR\${DllName}" 0 +2
|
|
StrCpy $1 1 ; already installed
|
|
|
|
!if "${_BUILDARCH}" == "x64"
|
|
${If} ${Is64Bit} == false
|
|
DetailPrint "InstallSystemDll 32 ${DllSrcLocation64}\${DllName} $SYSDIR\${DllName}"
|
|
!insertmacro InstallLib DLL $1 REBOOT_NOTPROTECTED ${DllSrcLocation32}\${DllName} "$SYSDIR\${DllName}" $SYSDIR
|
|
${Else}
|
|
!define LIBRARY_X64
|
|
DetailPrint "InstallSystemDll 64 ${DllSrcLocation64}\${DllName} $SYSDIR\${DllName}"
|
|
!insertmacro InstallLib DLL $1 REBOOT_NOTPROTECTED ${DllSrcLocation64}\${DllName} "$SYSDIR\${DllName}" $SYSDIR
|
|
!insertmacro EnableX64FSRedirection
|
|
!undef LIBRARY_X64
|
|
${EndIf}
|
|
!else
|
|
!insertmacro InstallLib DLL $1 REBOOT_NOTPROTECTED ${DllSrcLocation32}\${DllName} "$SYSDIR\${DllName}" $SYSDIR
|
|
!endif
|
|
|
|
!macroend
|
|
|
|
;----------------------------------------------------------------------------
|
|
; macro CompareDllVersions
|
|
;----------------------------------------------------------------------------
|
|
|
|
!macro CompareDllVersions DllName Version
|
|
|
|
GetDllVersion "${DllName}" $R0 $R1
|
|
|
|
IntOp $R2 $R0 / 0x00010000
|
|
IntOp $R3 $R0 & 0x0000FFFF
|
|
IntOp $R0 $R1 >> 16
|
|
IntOp $R4 $R0 & 0x0000FFFF
|
|
IntOp $R5 $R1 & 0x0000FFFF
|
|
StrCpy $0 "$R2.$R3.$R4.$R5"
|
|
${VersionCompare} "$0" "${Version}" $R0
|
|
; result in $R0
|
|
; $R0=0 Versions are equal
|
|
; $R0=1 DllName version is newer
|
|
; $R0=2 DllName version is older
|
|
!macroend
|
|
|
|
;----------------------------------------------------------------------------
|
|
; macro InstallVCRedist
|
|
;----------------------------------------------------------------------------
|
|
|
|
; eventually, the 64 bit ver will need to include the 32 bit VC Redist. Not required right now.
|
|
|
|
!macro InstallVCRedist
|
|
|
|
!if "${_BUILDARCH}" == "x64"
|
|
File "${VCRedist64SrcLocation}"
|
|
!else
|
|
File "${VCRedist32SrcLocation}"
|
|
!endif
|
|
|
|
!if "${_BUILDARCH}" == "x64"
|
|
ExecWait '"${VCRedist64SrcLocation}" /passive' $0
|
|
!else
|
|
ExecWait '"${VCRedist32SrcLocation}" /passive' $0
|
|
!endif
|
|
|
|
StrCmp $0 "0" +3
|
|
MessageBox MB_OK|MB_ICONSTOP "Installation of VCRedist failed: $0"
|
|
Quit
|
|
|
|
!macroend
|
|
|
|
;----------------------------------------------------------------------------
|
|
; macro DownloadInstallVCRedist
|
|
;----------------------------------------------------------------------------
|
|
|
|
!macro DownloadInstallVCRedist
|
|
|
|
${If} ${RunningX64}
|
|
!insertmacro DisableX64FSRedirection
|
|
${EndIf}
|
|
|
|
!insertmacro CompareDllVersions "$SYSDIR\msvcp140.dll" "14.27.29016.0"
|
|
StrCmp $R0 "2" Update_Version
|
|
!insertmacro CompareDllVersions "$SYSDIR\vcruntime140.dll" "14.27.29016.0"
|
|
StrCmp $R0 "2" Update_Version
|
|
Goto DownloadInstallVCRedist_Exit ; versions are all up to date
|
|
|
|
Update_Version:
|
|
|
|
StrCpy $1 "https://aka.ms/vs/17/release"
|
|
!if "${_BUILDARCH}" == "x64"
|
|
StrCpy $1 "$1/X64"
|
|
StrCpy $2 "vc_redist.x64.exe"
|
|
!else
|
|
StrCpy $2 "vc_redist.x86.exe"
|
|
!endif
|
|
|
|
InitPluginsDir
|
|
inetc::get /SILENT /CONNECTTIMEOUT=5000 /RECEIVETIMEOUT=5000 $1/$2 $PLUGINSDIR\$2 /END
|
|
Pop $R0 ;Get the return value
|
|
StrCmp $R0 "OK" +3
|
|
MessageBox MB_RETRYCANCEL|MB_ICONSTOP "Download failed for: $1/$2.$\nError: $R0.$\nRerun the install when problem corrected." IDRETRY -3
|
|
Quit
|
|
|
|
ExecWait '"$PLUGINSDIR\$2" /passive' $0
|
|
StrCmp $0 "0" +3
|
|
MessageBox MB_OK|MB_ICONSTOP "Installation of VCRedist failed: $0.$\nRerun the install when problem corrected."
|
|
Quit
|
|
|
|
DownloadInstallVCRedist_Exit:
|
|
|
|
${If} ${RunningX64}
|
|
!insertmacro EnableX64FSRedirection
|
|
${EndIf}
|
|
|
|
!macroend
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function .onInit
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function .onInit
|
|
|
|
;
|
|
; Initialize variables
|
|
;
|
|
|
|
StrCpy $InstallType "Unknown"
|
|
StrCpy $LaunchControl "N"
|
|
StrCpy $MustReboot "N"
|
|
StrCpy $BundledInstall "N"
|
|
StrCpy $DeleteSandboxieIni "Y"
|
|
StrCpy $Language "0"
|
|
|
|
;
|
|
; Force InstallType if requested on command line
|
|
;
|
|
|
|
Call GetParameters
|
|
Pop $0
|
|
StrLen $1 $0
|
|
|
|
Force_Loop:
|
|
|
|
IntCmp $1 4 Force_Done Force_Done
|
|
StrCpy $2 $0 $1
|
|
IntOp $1 $1 - 1
|
|
|
|
StrCmp $2 "/lang=" Force_Language
|
|
StrCmp $2 "/install_bundled" Force_Bundled_Install
|
|
StrCmp $2 "/install" Force_Install
|
|
StrCmp $2 "/upgrade" Force_Upgrade
|
|
StrCmp $2 "/remove" Force_Remove
|
|
|
|
Goto Force_Loop
|
|
|
|
Force_Language:
|
|
|
|
StrCpy $Language $0 $1 6
|
|
StrLen $2 $Language
|
|
IntOp $2 $2 + 7 ; skip "/lang=NNNN "
|
|
StrLen $1 $0
|
|
IntOp $1 $1 - $2
|
|
StrCpy $0 $0 $1 $2
|
|
StrLen $1 $0
|
|
Goto Force_Loop
|
|
|
|
Force_Bundled_Install:
|
|
|
|
StrCpy $BundledInstall "Y"
|
|
StrCpy $LaunchControl "N"
|
|
Goto Force_Done
|
|
|
|
Force_Install:
|
|
|
|
StrCpy $InstallType "Install"
|
|
Goto Force_Done
|
|
|
|
Force_Upgrade:
|
|
|
|
StrCpy $InstallType "Upgrade"
|
|
Goto Force_Done
|
|
|
|
Force_Remove:
|
|
|
|
StrCpy $InstallType "Remove"
|
|
Goto Force_Done
|
|
|
|
Force_Done:
|
|
|
|
;
|
|
; Detect existing installation, unless given by /D parameter
|
|
;
|
|
|
|
StrCmp $INSTDIR "(na)" 0 InstDir_Done
|
|
|
|
!insertmacro Reg_ReadString "" ${HKEY_LOCAL_MACHINE} "SYSTEM\CurrentControlSet\Services\${SBIEDRV}" "ImagePath"
|
|
Pop $0
|
|
StrCmp $0 "" 0 InstDir_CheckPath
|
|
|
|
Goto InstDir_ProgramFiles
|
|
|
|
InstDir_CheckPath:
|
|
|
|
StrCpy $1 $0 4 0
|
|
StrCmp $1 "\??\" 0 InstDir_Check_Suffix
|
|
StrCpy $0 $0 "" 4
|
|
|
|
InstDir_Check_Suffix:
|
|
|
|
Push -12
|
|
Pop $2
|
|
StrCpy $1 $0 "" $2
|
|
StrCmp $1 "\${SBIEDRV_SYS}" InstDir_Suffix_Good
|
|
|
|
Goto InstDir_ProgramFiles
|
|
|
|
InstDir_Suffix_Good:
|
|
|
|
StrCpy $0 $0 $2
|
|
Goto InstDir_Found
|
|
|
|
InstDir_ProgramFiles:
|
|
|
|
!insertmacro Reg_ReadString "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion" "ProgramFilesDir"
|
|
Pop $0
|
|
StrCmp $0 "" InstDir_Done
|
|
StrCpy $0 "$0\${PRODUCT_FULL_NAME}"
|
|
|
|
InstDir_Found:
|
|
|
|
StrCpy $INSTDIR $0
|
|
|
|
InstDir_Done:
|
|
|
|
;
|
|
; Detect InstallType if not yet known
|
|
;
|
|
|
|
StrCmp $InstallType "Unknown" 0 InstType_Done
|
|
|
|
StrCmp "$EXEDIR" "$INSTDIR" InstType_Remove
|
|
StrCmp "$EXEDIR" "$INSTDIR\" InstType_Remove
|
|
StrCmp "$EXEDIR\" "$INSTDIR" InstType_Remove
|
|
StrCmp "$EXEDIR" "$WINDIR\Installer" InstType_Remove
|
|
StrCmp "$EXEDIR" "$WINDIR\Installer\" InstType_Remove
|
|
StrCmp "$EXEDIR\" "$WINDIR\Installer" InstType_Remove
|
|
|
|
IfFileExists $INSTDIR\${SBIEDRV_SYS} InstType_Upgrade
|
|
IfFileExists $INSTDIR\${SBIESVC_EXE} InstType_Upgrade
|
|
IfFileExists $INSTDIR\${SBIEDLL_DLL} InstType_Upgrade
|
|
|
|
; default InstallType for a new install, unless we detected an installation
|
|
|
|
StrCpy $InstallType "Install"
|
|
Goto InstType_Done
|
|
|
|
InstType_Upgrade:
|
|
|
|
StrCpy $InstallType "Upgrade"
|
|
Goto InstType_Done
|
|
|
|
InstType_Remove:
|
|
|
|
StrCpy $InstallType "Remove"
|
|
|
|
InstType_Done:
|
|
|
|
;
|
|
; Language
|
|
;
|
|
|
|
StrCmp $Language "0" 0 Lang_Done
|
|
|
|
ReadRegDWORD $0 HKLM "SYSTEM\CurrentControlSet\Services\${SBIESVC}" "Language"
|
|
IntCmp $0 1033 Lang_AutoSelect ; English
|
|
IntCmp $0 1052 Lang_AutoSelect ; Albanian
|
|
IntCmp $0 1025 Lang_AutoSelect ; Arabic
|
|
IntCmp $0 1026 Lang_AutoSelect ; Bulgarian
|
|
IntCmp $0 1050 Lang_AutoSelect ; Croatian
|
|
IntCmp $0 1029 Lang_AutoSelect ; Czech
|
|
IntCmp $0 1030 Lang_AutoSelect ; Danish
|
|
IntCmp $0 1043 Lang_AutoSelect ; Dutch
|
|
IntCmp $0 1061 Lang_AutoSelect ; Estonian
|
|
IntCmp $0 1065 Lang_AutoSelect ; Farsi
|
|
IntCmp $0 1035 Lang_AutoSelect ; Finnish
|
|
IntCmp $0 1036 Lang_AutoSelect ; French
|
|
IntCmp $0 1031 Lang_AutoSelect ; German
|
|
IntCmp $0 1032 Lang_AutoSelect ; Greek
|
|
IntCmp $0 1037 Lang_AutoSelect ; Hebrew
|
|
IntCmp $0 1038 Lang_AutoSelect ; Hungarian
|
|
IntCmp $0 1040 Lang_AutoSelect ; Italian
|
|
IntCmp $0 1057 Lang_AutoSelect ; Indonesian
|
|
IntCmp $0 1041 Lang_AutoSelect ; Japanese
|
|
IntCmp $0 1042 Lang_AutoSelect ; Korean
|
|
IntCmp $0 1071 Lang_AutoSelect ; Macedonian
|
|
IntCmp $0 1045 Lang_AutoSelect ; Polish
|
|
IntCmp $0 1046 Lang_AutoSelect ; Portuguese (Brasil)
|
|
IntCmp $0 2070 Lang_AutoSelect ; Portuguese (Portugal)
|
|
IntCmp $0 1049 Lang_AutoSelect ; Russian
|
|
IntCmp $0 1051 Lang_AutoSelect ; Slovak
|
|
IntCmp $0 1034 Lang_AutoSelect ; Spanish
|
|
IntCmp $0 1053 Lang_AutoSelect ; Swedish
|
|
IntCmp $0 1055 Lang_AutoSelect ; Turkish
|
|
IntCmp $0 1058 Lang_AutoSelect ; Ukrainian
|
|
IntCmp $0 1028 Lang_AutoSelect ; Chinese (Traditional)
|
|
IntCmp $0 2052 Lang_AutoSelect ; Chinese (Simplified)
|
|
StrCpy $0 1033 ; English - default
|
|
|
|
Lang_AutoSelect:
|
|
|
|
StrCpy $Language $0
|
|
StrCmp $InstallType "Remove" Lang_Done
|
|
|
|
!define MUI_LANGDLL_WINDOWTITLE "${NAME_${_BUILDARCH}}"
|
|
!insertmacro MUI_LANGDLL_DISPLAY
|
|
|
|
Lang_Done:
|
|
|
|
;
|
|
; Extract InstallOptions scripts
|
|
;
|
|
|
|
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
|
|
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "Warning.ini"
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function ConfirmRequirements
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function ConfirmRequirements
|
|
|
|
;
|
|
; Confirm we are on Windows XP or later
|
|
;
|
|
|
|
!insertmacro Reg_ReadString "" ${HKEY_LOCAL_MACHINE} "'Software\Microsoft\Windows NT\CurrentVersion'" "CurrentVersion"
|
|
Pop $0
|
|
StrCmp $0 "" SystemCheck_Fail
|
|
;StrCmp $0 "5.1" SystemCheck_Done_XP_2003_Vista
|
|
;StrCmp $0 "5.2" SystemCheck_Done_XP_2003_Vista
|
|
;StrCmp $0 "6.0" SystemCheck_Done_XP_2003_Vista
|
|
StrCmp $0 "6.1" SystemCheck_Done
|
|
StrCmp $0 "6.2" SystemCheck_Done
|
|
StrCmp $0 "6.3" SystemCheck_Done
|
|
StrCmp $0 "10.0" SystemCheck_Done
|
|
Goto SystemCheck_Fail
|
|
|
|
SystemCheck_Fail:
|
|
|
|
StrCmp $InstallType "Remove" SystemCheck_Force_Remove
|
|
|
|
;SystemCheck_Done_XP_2003_Vista:
|
|
|
|
!if "${_BUILDARCH}" == "x64"
|
|
|
|
MessageBox MB_OK|MB_ICONSTOP "$(MSG_8041)$\n\
|
|
(64-bit) Windows 7, Windows 8, Windows 10, Windows 11."
|
|
StrCmp $InstallType "Upgrade" SystemCheck_Force_Remove
|
|
Quit
|
|
|
|
!else
|
|
|
|
MessageBox MB_OK|MB_ICONSTOP "$(MSG_8041)$\n\
|
|
(32-bit) Windows 7, Windows 8, Windows 10."
|
|
StrCmp $InstallType "Upgrade" SystemCheck_Force_Remove
|
|
Quit
|
|
|
|
!endif
|
|
|
|
Goto SystemCheck_Done
|
|
|
|
SystemCheck_Force_Remove:
|
|
|
|
StrCpy $InstallType "ForceRemove"
|
|
Goto SystemCheck_Done
|
|
|
|
SystemCheck_Done:
|
|
|
|
!insertmacro Reg_ReadString "" ${HKEY_LOCAL_MACHINE} "'Software\Microsoft\Windows\CurrentVersion\Uninstall\Sandboxie-Plus_is1'" "UninstallString"
|
|
Pop $0
|
|
StrCmp $0 "" PlusCheck_Done
|
|
|
|
MessageBox MB_OK|MB_ICONSTOP "Sandboxie Plus installation detected, you must uninstall it first before you can downgrade to Sandboxie Classic!"
|
|
Quit
|
|
|
|
PlusCheck_Done:
|
|
|
|
;
|
|
; Confirm we are running as Administrator
|
|
;
|
|
|
|
Call IsUserAdmin
|
|
Pop $0
|
|
StrCmp $0 1 AdminCheck_Done
|
|
|
|
MessageBox MB_OK|MB_ICONSTOP $(MSG_8042)
|
|
Quit
|
|
|
|
AdminCheck_Done:
|
|
|
|
;
|
|
; Confirm that Installer bitness is same as that of the operating system
|
|
; Our installer is a 32-bit program, so if WOW-64 mode is enabled in the
|
|
; process, it means we are in 64-bit Windows
|
|
;
|
|
|
|
Call IsWow64
|
|
Pop $0
|
|
|
|
!if "${_BUILDARCH}" == "x64"
|
|
|
|
StrCmp $0 "Y" InitCheck_Done
|
|
MessageBox MB_OK|MB_ICONSTOP $(MSG_8044)
|
|
Quit
|
|
|
|
!else
|
|
|
|
StrCmp $0 "N" InitCheck_Done
|
|
MessageBox MB_OK|MB_ICONSTOP $(MSG_8043)
|
|
Quit
|
|
|
|
!endif
|
|
|
|
InitCheck_Done:
|
|
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function SkipLicensePage
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function SkipLicensePage
|
|
|
|
;
|
|
; Confirm minimum Windows version and use of Administrator account
|
|
;
|
|
|
|
Call ConfirmRequirements
|
|
|
|
;
|
|
; Skip license page if not Install mode
|
|
;
|
|
|
|
; StrCmp $InstallType "Install" SkipLicensePage_Done
|
|
StrCmp $InstallType "Remove" 0 SkipLicensePage_Done
|
|
|
|
Abort
|
|
|
|
SkipLicensePage_Done:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function InstallTypePage
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function InstallTypePage
|
|
|
|
;
|
|
; Provisional windows 7 support
|
|
;
|
|
; !insertmacro Reg_ReadString "" ${HKEY_LOCAL_MACHINE} "'Software\Microsoft\Windows NT\CurrentVersion'" "CurrentVersion"
|
|
; Pop $0
|
|
; StrCmp $0 "6.0" w7_Drv_ask
|
|
; StrCmp $0 "6.1" w7_Drv_ask
|
|
; Goto w7_Skip
|
|
;
|
|
;w7_Drv_ask:
|
|
;
|
|
; MessageBox MB_YESNO|MB_ICONQUESTION "Windows 7 requires a provisional driver package. You will have to download it from the GitHub release page https://github.com/sandboxie-plus/Sandboxie/releases/$\r$\nDo you have it downloaded?" IDYES w7_Drv_ok
|
|
;
|
|
; MessageBox MB_YESNO|MB_ICONQUESTION "Do you want to open the download page in your default web browser?" IDNO w7_Drv_cancel
|
|
; ExecShell "open" "https://github.com/sandboxie-plus/Sandboxie/releases/"
|
|
; Goto w7_Drv_ok
|
|
;
|
|
;w7_Drv_cancel:
|
|
; MessageBox MB_OK|MB_ICONSTOP "On windows 7 the install can not continue without the provisional driver package"
|
|
;
|
|
; Quit
|
|
;
|
|
;w7_Drv_ok:
|
|
;
|
|
; nsDialogs::SelectFileDialog open "" "Driver binary (*.${_W7DRV_COMPAT}.rc4)|*.${_W7DRV_COMPAT}.rc4|All Files|*.*"
|
|
;
|
|
; Pop $0
|
|
; StrCmp $0 "" w7_Drv_cancel
|
|
; StrCpy $Win7Driver $0
|
|
;
|
|
;; MessageBox MB_OK $Win7Driver
|
|
;
|
|
;w7_Skip:
|
|
|
|
StrCmp $InstallType "Install" InstallType_Done
|
|
|
|
StrCmp $InstallType "Upgrade" InstallType_SetFolder
|
|
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 4" "State" "0"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 5" "State" "1"
|
|
|
|
StrCmp $InstallType "ForceRemove" 0 InstallType_SetFolder
|
|
StrCpy $InstallType "Remove"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 4" "Flags" "DISABLED"
|
|
|
|
InstallType_SetFolder:
|
|
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 2" "State" "$INSTDIR"
|
|
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Settings" "RTL" "$(^RTL)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Settings" "NextButtonText" "$(MSG_8003)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 1" "Text" "$(MSG_8004)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 3" "Text" "$(MSG_8005)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 4" "Text" "$(MSG_8006)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 5" "Text" "$(MSG_8007)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 6" "Text" "$(MSG_8008)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "InstallType.ini" "Field 7" "Text" "$(MSG_8009)"
|
|
|
|
!insertmacro MUI_HEADER_TEXT "$(MSG_8001)" "$(MSG_8002)"
|
|
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "InstallType.ini"
|
|
|
|
InstallType_Done:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function SkipDirectoryPage
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function SkipDirectoryPage
|
|
|
|
StrCmp $InstallType "Install" SkipDirectoryPage_Done
|
|
|
|
;
|
|
; Set InstallType according to selected radio button
|
|
;
|
|
|
|
!insertmacro MUI_INSTALLOPTIONS_READ $4 "InstallType.ini" "Field 4" "State"
|
|
!insertmacro MUI_INSTALLOPTIONS_READ $5 "InstallType.ini" "Field 5" "State"
|
|
|
|
StrCmp $4 "1" SetType_Upgrade
|
|
StrCmp $5 "1" SetType_Remove
|
|
Goto SetType_Done
|
|
|
|
SetType_Upgrade:
|
|
|
|
StrCpy $InstallType "Upgrade"
|
|
Goto SetType_Done
|
|
|
|
SetType_Remove:
|
|
|
|
StrCpy $InstallType "Remove"
|
|
Goto SetType_Done
|
|
|
|
SetType_Done:
|
|
|
|
Abort
|
|
|
|
SkipDirectoryPage_Done:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function SetHeaderForRemove
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function SetHeaderForRemove
|
|
|
|
StrCmp $InstallType "Remove" 0 SetHeaderForRemove_Done
|
|
|
|
!insertmacro MUI_HEADER_TEXT "Uninstalling" "$(MSG_8016)"
|
|
|
|
;
|
|
; Ask about removing settings
|
|
;
|
|
|
|
IfSilent SetHeaderForRemove_Done
|
|
|
|
MessageBox MB_YESNO|MB_ICONQUESTION "$(MSG_8054)" IDNO SetHeaderForRemove_Done
|
|
|
|
StrCpy $DeleteSandboxieIni "N"
|
|
|
|
SetHeaderForRemove_Done:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Install Section
|
|
;----------------------------------------------------------------------------
|
|
|
|
; We download various files during install just to keep stats on activity
|
|
|
|
Function DownloadStatPng
|
|
;
|
|
Pop $0 ; Get the parameter (file name to download)
|
|
; ${If} ${RunningX64}
|
|
; SetRegView 64
|
|
; ${EndIf}
|
|
; ReadRegStr $1 HKLM "SOFTWARE\Microsoft\Cryptography" "MachineGuid"
|
|
; StrCpy $2 "https://www.sandboxie.com/img/$0?SessionId=$1"
|
|
;
|
|
; ;NSISdl::download_quiet /TIMEOUT=3000 $2 $TEMP\$0
|
|
; inetc::get /SILENT /CONNECTTIMEOUT=5000 /RECEIVETIMEOUT=5000 $2 $TEMP\$0 /END
|
|
; Pop $0 ;Get the return value
|
|
; ;MessageBox MB_OK|MB_ICONSTOP "DownloadStatPng: $2$\n$0"
|
|
; ${If} ${RunningX64}
|
|
; SetRegView 32
|
|
; ${EndIf}
|
|
FunctionEnd
|
|
|
|
Function CheckUpdates
|
|
|
|
StrCpy $0 "install"
|
|
StrCmp $InstallType "Install" DoCheck
|
|
StrCpy $0 "upgrade"
|
|
|
|
DoCheck:
|
|
DetailPrint "Running UpdUtil ..."
|
|
SetDetailsPrint listonly
|
|
|
|
ExecWait '"$INSTDIR\UpdUtil.exe" $0 sandboxie /step:scan /scope:meta /version:${VERSION}' $1
|
|
;MessageBox MB_OK "UpdUtil: $0"
|
|
|
|
IntCmp $1 0 is0 lessthan0 morethan0
|
|
is0:
|
|
;DetailPrint "no update"
|
|
Goto NoUpdate
|
|
lessthan0:
|
|
;DetailPrint "error"
|
|
Goto NoUpdate
|
|
morethan0:
|
|
DetailPrint "$$0 > 5"
|
|
Goto Update
|
|
|
|
Update:
|
|
MessageBox MB_YESNO|MB_ICONQUESTION "$(MSG_8055)" IDNO NoUpdate
|
|
|
|
ExecWait '"$INSTDIR\UpdUtil.exe" $0 sandboxie /step:apply /scope:meta'
|
|
|
|
NoUpdate:
|
|
SetDetailsPrint both
|
|
FunctionEnd
|
|
|
|
Section ""
|
|
|
|
;LogSet on
|
|
;
|
|
; Prepare KmdUtil and then use it to warn about running programs
|
|
;
|
|
|
|
File "/oname=$PLUGINSDIR\KmdUtil.exe" "${BIN_ROOT}\KmdUtil.Exe"
|
|
File "/oname=$PLUGINSDIR\${SBIEMSG_DLL}" "${BIN_ROOT}\SbieMsg.dll"
|
|
File "/oname=$PLUGINSDIR\${SBIEDLL_DLL}" "${BIN_ROOT}\${SBIEDLL_DLL}"
|
|
|
|
StrCpy $0 ""
|
|
IfSilent 0 +2
|
|
StrCpy $0 "_silent"
|
|
StrCpy $0 "scandll$0"
|
|
Push $0
|
|
Call KmdUtilX
|
|
IfErrors FindWindow_Abort
|
|
|
|
;
|
|
; Close Sandboxie Control if it is running
|
|
;
|
|
|
|
FindWindow_Check:
|
|
|
|
FindWindow $0 "${SANDBOXIE_CONTROL}WndClass" ""
|
|
StrCmp $0 0 FindWindow_Done
|
|
|
|
SendMessage $0 ${WM_DESTROY} 0 0 /TIMEOUT=2000
|
|
Sleep 1000
|
|
|
|
FindWindow $0 "${SANDBOXIE_CONTROL}WndClass" ""
|
|
StrCmp $0 0 FindWindow_Done
|
|
|
|
MessageBox MB_OKCANCEL|MB_ICONQUESTION "$(MSG_8051)" IDCANCEL FindWindow_Abort
|
|
|
|
Goto FindWindow_Check
|
|
|
|
FindWindow_Abort:
|
|
|
|
Abort
|
|
|
|
FindWindow_Done:
|
|
|
|
;
|
|
; Stop Sandboxie Service
|
|
;
|
|
|
|
Push "stop ${SBIESVC}"
|
|
Call KmdUtil
|
|
|
|
; Windows 10 doesn't allow copying a .sys on top of a running driver. So we have to stop it here.
|
|
Push "stop ${SBIEDRV}"
|
|
Call KmdUtil
|
|
;
|
|
; Branch to Install, Upgrade or Remove according to install mode
|
|
;
|
|
|
|
StrCmp $InstallType "Install" Install
|
|
|
|
ReadRegStr $0 HKLM "SOFTWARE\System Safety\System Safety Monitor\2" "Version"
|
|
StrCmp $0 "" NoSystemSafetyMonitor
|
|
StrCpy $MustReboot "Y"
|
|
NoSystemSafetyMonitor:
|
|
|
|
ReadRegStr $0 HKLM "SOFTWARE\TrendMicro\PC-cillin" "version"
|
|
StrCmp $0 "" NoTrendMicro
|
|
StrCpy $MustReboot "Y"
|
|
NoTrendMicro:
|
|
|
|
StrCmp $InstallType "Upgrade" Upgrade
|
|
StrCmp $InstallType "Remove" Remove
|
|
|
|
Abort
|
|
|
|
;
|
|
; Install and Upgrade
|
|
;
|
|
|
|
Upgrade:
|
|
|
|
Call DeleteProductKey
|
|
Call DeleteSystemKeys
|
|
Call DeleteShortCuts
|
|
; we use this file download as a total # of upgrades counter
|
|
Push "sbietrayfullup.png"
|
|
Call DownloadStatPng
|
|
Goto Install2
|
|
|
|
Install:
|
|
|
|
; we use this file download as a total # of installs counter
|
|
Push "sbietrayfull.png"
|
|
Call DownloadStatPng
|
|
|
|
Install2:
|
|
Call WriteProgramFiles
|
|
|
|
!define DllSrcLocation32 "..\Build\Support"
|
|
|
|
; MS libraries are all static with Visual Studio 2015
|
|
;!if "${_BUILDARCH}" == "x64"
|
|
; !define DllSrcLocation64 "..\Build\Support\x64"
|
|
; !insertmacro InstallSystemDll "msvcp140.dll" true
|
|
; !insertmacro InstallSystemDll "msvcp140_1.dll" true
|
|
; !insertmacro InstallSystemDll "vcruntime140.dll" true
|
|
; !insertmacro InstallSystemDll "vcruntime140_1.dll" true
|
|
; !insertmacro InstallSystemDll "mfc140u.dll" true
|
|
;!endif
|
|
|
|
;!ifdef INCLUDE_VCREDIST_DNLD
|
|
; !insertmacro DownloadInstallVCRedist
|
|
;!else
|
|
; !insertmacro InstallSystemDll "msvcp140.dll" false
|
|
; !insertmacro InstallSystemDll "msvcp140_1.dll" false
|
|
; !insertmacro InstallSystemDll "vcruntime140.dll" false
|
|
; !insertmacro InstallSystemDll "vcruntime140_1.dll" false
|
|
; !insertmacro InstallSystemDll "mfc140u.dll" false
|
|
;!endif
|
|
|
|
Call CheckUpdates
|
|
Call WriteProductKey
|
|
Call WriteShortCuts
|
|
|
|
Goto Section_Done
|
|
|
|
;
|
|
; Remove
|
|
;
|
|
|
|
Remove:
|
|
|
|
; we use this file download as a total # of uninstalls counter
|
|
Push "sbietrayempty.png"
|
|
Call DownloadStatPng
|
|
Call DeleteProductKey
|
|
Call DeleteProgramFiles
|
|
Call DeleteSystemKeys
|
|
Call DeleteShortCuts
|
|
|
|
Goto Section_Done
|
|
|
|
;
|
|
; Done
|
|
;
|
|
|
|
Section_Done:
|
|
|
|
IfSilent 0 Section_Done2
|
|
Call DriverPage
|
|
|
|
Section_Done2:
|
|
|
|
SectionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function WriteProgramFiles
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function WriteProgramFiles
|
|
|
|
SetOverwrite try
|
|
|
|
SetOutPath "$INSTDIR"
|
|
|
|
StrCpy $2 0
|
|
|
|
WriteLoop:
|
|
|
|
;
|
|
; Write files
|
|
;
|
|
|
|
File /oname=${SBIEDLL_DLL} "${BIN_ROOT}\${SBIEDLL_DLL}"
|
|
|
|
File /oname=${SBIESVC_EXE} "${BIN_ROOT}\SbieSvc.exe"
|
|
File /oname=${SBIESVC_EXE}.sig "${BIN_ROOT}\SbieSvc.exe.sig"
|
|
|
|
!if "${_BUILDARCH}" == "x64"
|
|
|
|
CreateDirectory $INSTDIR\32
|
|
|
|
File /oname=32\${SBIEDLL_DLL} "${BIN_ROOT_Win32}\${SBIEDLL_DLL}"
|
|
|
|
File /oname=32\${SBIESVC_EXE} "${BIN_ROOT_Win32}\SbieSvc.exe"
|
|
|
|
!endif
|
|
|
|
File /oname=${SBIEMSG_DLL} "${BIN_ROOT}\SbieMsg.dll"
|
|
|
|
File /oname=${SBIEDRV_SYS} "${BIN_ROOT}\SbieDrv.sys"
|
|
; File /oname=${SBIEDRV_SYS4} "${BIN_ROOT}\SbieDrv.sys.rc4"
|
|
; File /oname=${SBIEDRV_SYSX} "${BIN_ROOT}\SbieDrv.sys.w10"
|
|
|
|
File /oname=KmdUtil.exe "${BIN_ROOT}\KmdUtil.Exe"
|
|
File /oname=UpdUtil.exe "${BIN_ROOT}\UpdUtil.Exe"
|
|
|
|
File /oname=SboxHostDll.dll "${BIN_ROOT}\SboxHostDll.dll"
|
|
|
|
File /oname=${SANDBOXIE}RpcSs.exe "${BIN_ROOT}\SandboxieRpcSs.exe"
|
|
File /oname=${SANDBOXIE}DcomLaunch.exe "${BIN_ROOT}\SandboxieDcomLaunch.exe"
|
|
File /oname=${SANDBOXIE}BITS.exe "${BIN_ROOT}\SandboxieBITS.exe"
|
|
File /oname=${SANDBOXIE}Crypto.exe "${BIN_ROOT}\SandboxieCrypto.exe"
|
|
File /oname=${SANDBOXIE}WUAU.exe "${BIN_ROOT}\SandboxieWUAU.exe"
|
|
|
|
File /oname=${START_EXE} "${BIN_ROOT}\Start.exe"
|
|
File /oname=${START_EXE}.sig "${BIN_ROOT}\Start.exe.sig"
|
|
|
|
File /oname=${SBIECTRL_EXE} "${BIN_ROOT}\SbieCtrl.exe"
|
|
File /oname=${SBIECTRL_EXE}.sig "${BIN_ROOT}\SbieCtrl.exe.sig"
|
|
|
|
File "..\install\Templates.ini"
|
|
|
|
File "Manifest0.txt"
|
|
File "Manifest1.txt"
|
|
File "Manifest2.txt"
|
|
|
|
File /oname=${SBIEINI_EXE} "${BIN_ROOT}\SbieIni.exe"
|
|
|
|
File "whatsnew.html"
|
|
|
|
;File "${BIN_ROOT}\License.exe"
|
|
|
|
File "LICENSE.TXT"
|
|
|
|
;
|
|
; Check for files being held
|
|
;
|
|
|
|
IfErrors 0 WriteOk
|
|
|
|
IntCmp $2 5 WriteError
|
|
IntOp $2 $2 + 1
|
|
Sleep 1000
|
|
Goto WriteLoop
|
|
|
|
WriteError:
|
|
|
|
IfSilent WriteAbort
|
|
StrCpy $2 0
|
|
MessageBox MB_OKCANCEL|MB_ICONSTOP $(MSG_8052) IDOK WriteLoop
|
|
|
|
WriteAbort:
|
|
|
|
Abort
|
|
|
|
WriteOk:
|
|
|
|
SetOverwrite on
|
|
|
|
;
|
|
; Create shortcut
|
|
;
|
|
|
|
CreateShortCut "$INSTDIR\QuickLaunch.lnk" "$INSTDIR\${START_EXE}" default_browser "" "" SW_SHOWNORMAL "" "$(MSG_8026)"
|
|
|
|
;
|
|
; Copy this Installer program to the Windows\Installer directory
|
|
;
|
|
|
|
StrCmp $BundledInstall "Y" SkipCopyInstaller
|
|
|
|
CreateDirectory "$WINDIR\Installer"
|
|
CopyFiles /SILENT "$EXEPATH" "$WINDIR\Installer\${OUTFILE_${_BUILDARCH}}"
|
|
|
|
SkipCopyInstaller:
|
|
|
|
;
|
|
; Delete old files
|
|
;
|
|
|
|
Delete "$DESKTOP\${PRODUCT_NAME} Quick Launch.lnk"
|
|
Delete "$QUICKLAUNCH\${PRODUCT_NAME} Quick Launch.lnk"
|
|
Delete "$INSTDIR\${SBIEDRV_SYS}.rc4"
|
|
Delete "$INSTDIR\${SBIEDRV_SYS}.w10"
|
|
Delete "$INSTDIR\${SBIEINI_EXE}.sig"
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function DeleteProgramFiles
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function DeleteProgramFiles
|
|
|
|
;
|
|
; Delete program files
|
|
;
|
|
|
|
Delete "$INSTDIR\${SBIEDLL_DLL}"
|
|
|
|
Delete "$INSTDIR\${SBIESVC_EXE}"
|
|
Delete "$INSTDIR\${SBIESVC_EXE}.sig"
|
|
|
|
!if "${_BUILDARCH}" == "x64"
|
|
|
|
Delete "$INSTDIR\32\${SBIEDLL_DLL}"
|
|
|
|
Delete "$INSTDIR\32\${SBIESVC_EXE}"
|
|
|
|
RMDir "$INSTDIR\32"
|
|
|
|
!endif
|
|
|
|
Delete "$INSTDIR\${SBIEMSG_DLL}"
|
|
|
|
Delete "$INSTDIR\${SBIEDRV_SYS}"
|
|
Delete "$INSTDIR\${SBIEDRV_SYS}.rc4" ; leftover
|
|
Delete "$INSTDIR\${SBIEDRV_SYS}.w10" ; leftover
|
|
|
|
Delete "$INSTDIR\KmdUtil.exe"
|
|
Delete "$INSTDIR\UpdUtil.exe"
|
|
|
|
Delete "$INSTDIR\SboxHostDll.dll"
|
|
|
|
Delete "$INSTDIR\boxHostDll.dll"
|
|
|
|
Delete "$INSTDIR\${SANDBOXIE}WUAU.exe"
|
|
Delete "$INSTDIR\${SANDBOXIE}EventSys.exe"
|
|
Delete "$INSTDIR\${SANDBOXIE}Crypto.exe"
|
|
Delete "$INSTDIR\${SANDBOXIE}BITS.exe"
|
|
Delete "$INSTDIR\${SANDBOXIE}DcomLaunch.exe"
|
|
Delete "$INSTDIR\${SANDBOXIE}RpcSs.exe"
|
|
|
|
Delete "$INSTDIR\${START_EXE}"
|
|
Delete "$INSTDIR\${START_EXE}.sig"
|
|
|
|
Delete "$INSTDIR\${SBIECTRL_EXE}"
|
|
Delete "$INSTDIR\${SBIECTRL_EXE}.sig"
|
|
|
|
Delete "$INSTDIR\Templates.ini"
|
|
|
|
Delete "$INSTDIR\Manifest0.txt"
|
|
Delete "$INSTDIR\Manifest1.txt"
|
|
Delete "$INSTDIR\Manifest2.txt"
|
|
|
|
Delete "$INSTDIR\${SBIEINI_EXE}"
|
|
Delete "$INSTDIR\${SBIEINI_EXE}.sig" ; leftover
|
|
|
|
Delete "$INSTDIR\whatsnew.html"
|
|
|
|
Delete "$INSTDIR\LICENSE.EXE"
|
|
|
|
Delete "$INSTDIR\LICENSE.TXT"
|
|
|
|
;
|
|
; Delete installer
|
|
;
|
|
|
|
Delete /REBOOTOK "$INSTDIR\${OUTFILE_Win32}"
|
|
Delete /REBOOTOK "$INSTDIR\${OUTFILE_x64}"
|
|
Delete /REBOOTOK "$INSTDIR\${OUTFILE_BOTH}"
|
|
Delete /REBOOTOK "$WINDIR\Installer\${OUTFILE_Win32}"
|
|
Delete /REBOOTOK "$WINDIR\Installer\${OUTFILE_x64}"
|
|
Delete /REBOOTOK "$WINDIR\Installer\${OUTFILE_BOTH}"
|
|
|
|
;
|
|
; Delete shortcuts
|
|
;
|
|
|
|
Delete "$INSTDIR\QuickLaunch.lnk"
|
|
|
|
Push "$DESKTOP"
|
|
Call DeleteDesktopShortCuts
|
|
|
|
Push "$QUICKLAUNCH"
|
|
Call DeleteDesktopShortCuts
|
|
|
|
RMDir /r "$SENDTO\${PRODUCT_NAME}"
|
|
Delete "$SENDTO\${PRODUCT_NAME} - *.lnk"
|
|
|
|
;
|
|
; Delete configuration files
|
|
;
|
|
|
|
StrCmp $DeleteSandboxieIni "N" SkipDeleteSandboxieIni
|
|
Delete "$INSTDIR\${SANDBOXIE_INI}"
|
|
Delete "$WINDIR\${SANDBOXIE_INI}"
|
|
|
|
SkipDeleteSandboxieIni:
|
|
|
|
;
|
|
; Delete installation folder
|
|
;
|
|
|
|
ClearErrors
|
|
SetOutPath "$TEMP" ; make sure $INSTDIR is not the current directory
|
|
RMDir "$INSTDIR"
|
|
|
|
IfErrors 0 SkipDeleteDir
|
|
Sleep 1000
|
|
RMDir "$INSTDIR"
|
|
|
|
SkipDeleteDir:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function WriteProductKey
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function WriteProductKey
|
|
|
|
;
|
|
; Create key for Add/Remove Programs
|
|
;
|
|
|
|
StrCmp $BundledInstall "Y" SkipAddRemovePrograms
|
|
|
|
!insertmacro Reg_CreateKey "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Uninstall" "${PRODUCT_NAME}"
|
|
!insertmacro Reg_WriteString "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" '"${NAME_${_BUILDARCH}}"'
|
|
!insertmacro Reg_WriteString "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayIcon" '$INSTDIR\Start.exe'
|
|
!insertmacro Reg_WriteString "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayVersion" '"${VERSION}"'
|
|
!insertmacro Reg_WriteString "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "Publisher" '"${COMPANY_NAME}"'
|
|
!insertmacro Reg_WriteString "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" `'"$WINDIR\Installer\${OUTFILE_${_BUILDARCH}}" /remove'`
|
|
!insertmacro Reg_WriteString "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "QuietUninstallString" `'"$WINDIR\Installer\${OUTFILE_${_BUILDARCH}}" /remove /S'`
|
|
|
|
;
|
|
; Create GUID value for CancelAutoplay functionality in Sandboxie Control
|
|
;
|
|
|
|
!insertmacro Reg_TestKey "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\CLSID"
|
|
Pop $0
|
|
StrCmp $0 "0" CancelAutoplay_Done
|
|
!insertmacro Reg_WriteString "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\CLSID" "${MY_AUTOPLAY_CLSID}" '""'
|
|
CancelAutoplay_Done:
|
|
|
|
SkipAddRemovePrograms:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function DeleteProductKey
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function DeleteProductKey
|
|
|
|
;
|
|
; Delete key for Add/Remove Programs
|
|
;
|
|
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Uninstall" "${PRODUCT_NAME}"
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function WriteShortCuts
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function WriteShortCuts
|
|
|
|
StrCmp $BundledInstall "Y" SkipWriteShortCuts
|
|
|
|
SetShellVarContext all
|
|
|
|
CreateDirectory "$SMPROGRAMS\${PRODUCT_FULL_NAME}"
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_FULL_NAME}\$(MSG_8021)" "$INSTDIR\${START_EXE}" "/box:__ask__ run_dialog" "" "" SW_SHOWNORMAL "" "$(MSG_8022)"
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_FULL_NAME}\$(MSG_8023)" "$INSTDIR\${START_EXE}" "/box:__ask__ start_menu" "" "" SW_SHOWNORMAL "" "$(MSG_8024)"
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_FULL_NAME}\$(MSG_8025)" "$INSTDIR\${START_EXE}" "default_browser" "" "" SW_SHOWNORMAL "" "$(MSG_8026)"
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_FULL_NAME}\$(MSG_8027)" "$INSTDIR\${START_EXE}" "." "" "" SW_SHOWNORMAL "" "$(MSG_8028)"
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_FULL_NAME}\$(MSG_8029)" "$INSTDIR\${SBIECTRL_EXE}" "/open" "" "" SW_SHOWNORMAL "" "$(MSG_8030)"
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_FULL_NAME}\$(MSG_8031)" "$WINDIR\Installer\${OUTFILE_${_BUILDARCH}}" "/remove" "" "" SW_SHOWNORMAL "" "$(MSG_8032)"
|
|
|
|
SkipWriteShortCuts:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function DeleteShortCuts
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function DeleteShortCuts
|
|
|
|
SetShellVarContext all
|
|
Call DeleteShortCuts_2
|
|
|
|
SetShellVarContext current
|
|
Call DeleteShortCuts_2
|
|
|
|
FunctionEnd
|
|
|
|
Function DeleteShortCuts_2
|
|
|
|
RMDir /r "$SMPROGRAMS\${PRODUCT_FULL_NAME}"
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function DeleteDesktopShortCuts
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function DeleteDesktopShortCuts
|
|
|
|
Pop $1
|
|
Delete "$1\${PRODUCT_NAME} Quick Launch.lnk"
|
|
|
|
; delete #8025.lnk in selected language and in English
|
|
Delete "$1\$(MSG_8025)"
|
|
Delete "$1\Run Web browser sandboxed.lnk"
|
|
|
|
; delete #8033.lnk in selected language and in English
|
|
Delete "$1\$(MSG_8033)"
|
|
Delete "$1\Sandboxed Web Browser.lnk"
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function DeleteSystemKeys
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function DeleteSystemKeys
|
|
|
|
StrCmp $InstallType "Remove" 0 ShellKey_Folder_Done
|
|
|
|
;
|
|
; Delete SandboxieControl value from Windows\Run key
|
|
;
|
|
|
|
!insertmacro Reg_ReadString "" ${HKEY_CURRENT_USER} "Software\Microsoft\Windows\CurrentVersion\Run" "${SANDBOXIE_CONTROL}"
|
|
Pop $0
|
|
StrCmp $0 "" RunKey_Done
|
|
|
|
!insertmacro Reg_DeleteValue "" ${HKEY_CURRENT_USER} "Software\Microsoft\Windows\CurrentVersion\Run" "${SANDBOXIE_CONTROL}"
|
|
|
|
RunKey_Done:
|
|
|
|
;
|
|
; Delete GUID value for CancelAutoplay functionality in Sandboxie Control
|
|
;
|
|
|
|
!insertmacro Reg_DeleteValue "" ${HKEY_LOCAL_MACHINE} "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\CLSID" "${MY_AUTOPLAY_CLSID}"
|
|
|
|
;
|
|
; Delete sandbox key from HKCR\*\shell key
|
|
;
|
|
|
|
!insertmacro Reg_TestKey "" ${HKEY_CLASSES_ROOT} "*\shell\${SANDBOX_VERB}"
|
|
Pop $0
|
|
StrCmp $0 "0" ShellKey_Star_Done
|
|
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_CLASSES_ROOT} "*\shell\${SANDBOX_VERB}" "command"
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_CLASSES_ROOT} "*\shell" "${SANDBOX_VERB}"
|
|
|
|
ShellKey_Star_Done:
|
|
|
|
;
|
|
; Delete sandbox key from HKCR\Folder\shell key
|
|
;
|
|
|
|
!insertmacro Reg_TestKey "" ${HKEY_CLASSES_ROOT} "Folder\shell\${SANDBOX_VERB}"
|
|
Pop $0
|
|
StrCmp $0 "0" ShellKey_Folder_Done
|
|
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_CLASSES_ROOT} "Folder\shell\${SANDBOX_VERB}" "command"
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_CLASSES_ROOT} "Folder\shell" "${SANDBOX_VERB}"
|
|
|
|
ShellKey_Folder_Done:
|
|
|
|
;
|
|
; Delete keys which may have been left by old versions of Sandboxie
|
|
;
|
|
; HKLM\Software\Classes\*\shell\sandbox
|
|
; HKLM\Software\Classes\Folder\shell\sandbox
|
|
; HKCR\exefile\shell
|
|
;
|
|
|
|
;
|
|
; Delete sandbox key from HKLM\Software\Classes\*\shell\sandbox
|
|
;
|
|
|
|
!insertmacro Reg_TestKey "" ${HKEY_LOCAL_MACHINE} "Software\Classes\*\shell\${SANDBOX_VERB}"
|
|
Pop $0
|
|
StrCmp $0 "0" HKLM_ShellKey_Star_Done
|
|
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_LOCAL_MACHINE} "Software\Classes\*\shell\${SANDBOX_VERB}" "command"
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_LOCAL_MACHINE} "Software\Classes\*\shell" "${SANDBOX_VERB}"
|
|
|
|
HKLM_ShellKey_Star_Done:
|
|
|
|
;
|
|
; Delete sandbox key from HKLM\Software\Classes\Folder\shell key
|
|
;
|
|
|
|
!insertmacro Reg_TestKey "" ${HKEY_LOCAL_MACHINE} "Software\Classes\Folder\shell\${SANDBOX_VERB}"
|
|
Pop $0
|
|
StrCmp $0 "0" HKLM_ShellKey_Folder_Done
|
|
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_LOCAL_MACHINE} "Software\Classes\Folder\shell\${SANDBOX_VERB}" "command"
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_LOCAL_MACHINE} "Software\Classes\Folder\shell" "${SANDBOX_VERB}"
|
|
|
|
HKLM_ShellKey_Folder_Done:
|
|
|
|
;
|
|
; Delete sandbox key from HKCR\exefile\shell key
|
|
;
|
|
|
|
!insertmacro Reg_TestKey "" ${HKEY_CLASSES_ROOT} "exefile\shell\${SANDBOX_VERB}"
|
|
Pop $0
|
|
StrCmp $0 "0" ShellKey_Exe_Done
|
|
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_CLASSES_ROOT} "exefile\shell\${SANDBOX_VERB}" "command"
|
|
!insertmacro Reg_DeleteKey "" ${HKEY_CLASSES_ROOT} "exefile\shell" "${SANDBOX_VERB}"
|
|
|
|
ShellKey_Exe_Done:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function KmdUtilX
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function KmdUtilX
|
|
|
|
Pop $1
|
|
DetailPrint "Running KmdUtil command: $1"
|
|
;MessageBox MB_OK|MB_ICONEXCLAMATION "Running KmdUtil command: $1"
|
|
ClearErrors
|
|
SetDetailsPrint listonly
|
|
ExecWait '"$PLUGINSDIR\KmdUtil.exe" /lang=$Language $1'
|
|
SetDetailsPrint both
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function KmdUtil
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function KmdUtil
|
|
|
|
Call KmdUtilX
|
|
IfErrors KmdUtil_Errors
|
|
Goto KmdUtil_Done
|
|
|
|
KmdUtil_Errors:
|
|
StrCmp $1 "stop ${SBIEDRV}" KmdUtil_SetReboot
|
|
DetailPrint "Could not process KmdUtil command: $1"
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION "$(MSG_8053)$\n$\n$PLUGINSDIR\KmdUtil.exe $1"
|
|
StrCmp $1 "stop ${SBIESVC}" KmdUtil_SetReboot
|
|
Goto KmdUtil_Done
|
|
|
|
KmdUtil_SetReboot:
|
|
SetRebootFlag true
|
|
|
|
KmdUtil_Done:
|
|
ClearErrors
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function DriverPage
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function DriverPage
|
|
|
|
;
|
|
; Show the warning page, unless we're doing a Remove
|
|
;
|
|
|
|
StrCmp $InstallType "Remove" Driver_Remove
|
|
|
|
IfSilent Driver_Silent
|
|
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "Warning.ini" "Settings" "RTL" "$(^RTL)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "Warning.ini" "Field 1" "Text" "$(MSG_8012)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "Warning.ini" "Field 2" "Text" "$(MSG_8013)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "Warning.ini" "Field 4" "Text" "$(MSG_8014)"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "Warning.ini" "Field 5" "Text" "$(MSG_8015)"
|
|
|
|
!insertmacro MUI_HEADER_TEXT "$(MSG_8010)" "$(MSG_8011)"
|
|
!insertmacro MUI_INSTALLOPTIONS_DISPLAY_RETURN "Warning.ini"
|
|
|
|
Pop $0
|
|
StrCmp $0 "cancel" Driver_Done
|
|
|
|
Driver_Silent:
|
|
|
|
;
|
|
; For Install and Upgrade, install the driver
|
|
;
|
|
|
|
StrCpy $0 'install ${SBIEDRV} "$INSTDIR\${SBIEDRV_SYS}" type=kernel start=demand "msgfile=$INSTDIR\${SBIEMSG_DLL}" altitude=${FILTER_ALTITUDE}'
|
|
Push $0
|
|
Call KmdUtil
|
|
|
|
Push 'install ${SBIESVC} "\"$INSTDIR\${SBIESVC_EXE}"\" type=own start=auto "display=${PRODUCT_FULL_NAME} Service" group=UIGroup "msgfile=$INSTDIR\${SBIEMSG_DLL}"'
|
|
Call KmdUtil
|
|
|
|
WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\${SBIESVC}" "Language" $Language
|
|
|
|
WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\${SBIESVC}" "PreferExternalManifest" 1
|
|
|
|
StrCmp $InstallType "Install" Driver_Install
|
|
StrCmp $InstallType "Upgrade" Driver_Upgrade
|
|
|
|
Abort
|
|
|
|
;
|
|
; For Upgrade, we make sure the driver is set to start manually,
|
|
; then stop driver (service was already stopped), and fallthrough
|
|
; to install processing to re-start the service (and driver).
|
|
;
|
|
; Note that KmdUtil "stop SbieDrv" will set the reboot flag,
|
|
; in case the driver cannot be unloaded.
|
|
;
|
|
|
|
Driver_Upgrade:
|
|
|
|
WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\${SBIEDRV}" "Start" 3
|
|
|
|
Push "stop ${SBIESVC}"
|
|
Call KmdUtil
|
|
|
|
Push "stop ${SBIEDRV}"
|
|
Call KmdUtil
|
|
|
|
IfRebootFlag Driver_Done
|
|
StrCmp $MustReboot "N" Driver_Install
|
|
SetRebootFlag true
|
|
Goto Driver_Done
|
|
|
|
;
|
|
; For Install, we start the driver and finish
|
|
;
|
|
|
|
Driver_Install:
|
|
|
|
; StrCmp $Win7Driver "" now_w7_Drv
|
|
;
|
|
;; MessageBox MB_OK $Win7Driver
|
|
; Delete "$INSTDIR\SbieDrv.sys.w10"
|
|
; Rename "$INSTDIR\SbieDrv.sys" "$INSTDIR\SbieDrv.sys.w10"
|
|
; CopyFiles $Win7Driver "$INSTDIR\SbieDrv.sys.rc4"
|
|
;
|
|
;now_w7_Drv:
|
|
|
|
Push "start ${SBIESVC}"
|
|
Call KmdUtil
|
|
|
|
StrCpy $LaunchControl "Y"
|
|
|
|
Goto Driver_Done
|
|
|
|
;
|
|
; For Remove, delete the driver and set the reboot flag
|
|
;
|
|
|
|
Driver_Remove:
|
|
|
|
Push "stop ${SBIESVC}"
|
|
Call KmdUtil
|
|
|
|
Push "stop ${SBIEDRV}"
|
|
Call KmdUtil
|
|
|
|
Push "delete ${SBIESVC}"
|
|
Call KmdUtil
|
|
|
|
Push "delete ${SBIEDRV}"
|
|
Call KmdUtil
|
|
|
|
StrCmp $MustReboot "N" Driver_Done
|
|
SetRebootFlag true
|
|
|
|
Driver_Done:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function DisableBackButton
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function DisableBackButton
|
|
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "BackEnabled" "0"
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "CancelEnabled" "0"
|
|
|
|
StrCmp $InstallType "Remove" 0 DisableBackButton_Done
|
|
|
|
;
|
|
; Replace "MUI_TEXT_FINISH_INFO_TEXT" with "MUI_UNTEXT_FINISH_INFO_TEXT".
|
|
;
|
|
; Note, for this to work, "Modern UI\System.nsh" must contain the following macro:
|
|
;
|
|
; !macro MUI_LANGUAGEFILE_UNLANGSTRING_PAGE_1 PAGE NAME
|
|
; LangString "${NAME}" 0 "${${NAME}}"
|
|
; !undef "${NAME}"
|
|
; !macroend
|
|
;
|
|
; and a line in System.nsh, in the macro "MUI_LANGUAGEFILE_END", must be changed from:
|
|
;
|
|
; !insertmacro MUI_LANGUAGEFILE_UNLANGSTRING_PAGE FINISH "MUI_UNTEXT_FINISH_INFO_TEXT"
|
|
;
|
|
; so that it invokes the special new _1 macro:
|
|
;
|
|
; !insertmacro MUI_LANGUAGEFILE_UNLANGSTRING_PAGE_1 FINISH "MUI_UNTEXT_FINISH_INFO_TEXT"
|
|
;
|
|
|
|
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Text" "$(MUI_UNTEXT_FINISH_INFO_TEXT)"
|
|
|
|
DisableBackButton_Done:
|
|
|
|
FunctionEnd
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Function .onGUIEnd
|
|
;----------------------------------------------------------------------------
|
|
|
|
Function .onGUIEnd
|
|
|
|
StrCmp $LaunchControl "Y" 0 Done
|
|
|
|
; ExecWait '"$INSTDIR\${START_EXE}" run_sbie_ctrl' $0
|
|
ExecWait '"$INSTDIR\${START_EXE}" open_agent:"${SBIECTRL_EXE} /open /sync /postsetup"' $0
|
|
|
|
Done:
|
|
|
|
FunctionEnd
|