| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- !include "MUI2.nsh"
- !include "FileFunc.nsh"
- !include "LogicLib.nsh"
- !define PRODUCT_NAME "steamSH"
- !define PRODUCT_VERSION "0.1.0"
- !define PRODUCT_PUBLISHER "steamSH"
- !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\steamSH.exe"
- !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
- !define PRODUCT_UNINST_ROOT_KEY "HKLM"
- ; 相对路径:Tauri 会把本脚本复制到 target/**/release/nsis/x64/ 下执行
- !define MUI_ICON "..\..\..\..\icons\icon.ico"
- !define MUI_UNICON "..\..\..\..\icons\icon.ico"
- !define MUI_ABORTWARNING
- !insertmacro MUI_PAGE_WELCOME
- !insertmacro MUI_PAGE_LICENSE "..\..\..\..\license.txt"
- !insertmacro MUI_PAGE_DIRECTORY
- !insertmacro MUI_PAGE_INSTFILES
- !insertmacro MUI_UNPAGE_CONFIRM
- !insertmacro MUI_UNPAGE_INSTFILES
- !insertmacro MUI_LANGUAGE "SimpChinese"
- !insertmacro MUI_LANGUAGE "English"
- ; Check if WebView2 runtime is installed
- Function CheckWebView2
- ReadRegStr $0 SHCTX "SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
- ${If} $0 != ""
- StrCpy $R9 "1"
- Return
- ${EndIf}
- ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
- ${If} $0 != ""
- StrCpy $R9 "1"
- Return
- ${EndIf}
- ReadRegStr $0 SHCTX "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
- ${If} $0 != ""
- StrCpy $R9 "1"
- Return
- ${EndIf}
- StrCpy $R9 "0"
- FunctionEnd
- ; Write temp PowerShell script to download and install WebView2
- Function InstallWebView2
- DetailPrint "Checking WebView2 runtime..."
- Call CheckWebView2
- ${If} $R9 == "1"
- DetailPrint "WebView2 already installed. Skipping."
- Return
- ${EndIf}
- DetailPrint "WebView2 not found. Downloading..."
- StrCpy $R8 "$TEMP\steamSH_wv2.ps1"
- FileOpen $R7 $R8 w
- StrCpy $R6 "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12`n"
- FileWrite $R7 $R6
- StrCpy $R6 "$$dest=$$env:TEMP+'\MicrosoftEdgeWebview2Setup.exe'`n"
- FileWrite $R7 $R6
- StrCpy $R6 "$$url='https://go.microsoft.com/fwlink/p/?LinkId=2124703'`n"
- FileWrite $R7 $R6
- StrCpy $R6 "try {`n"
- FileWrite $R7 $R6
- StrCpy $R6 " Invoke-WebRequest -Uri $$url -OutFile $$dest -UseBasicParsing -TimeoutSec 120`n"
- FileWrite $R7 $R6
- StrCpy $R6 " Start-Process -FilePath $$dest -ArgumentList '/silent','/closeProjects','/doNotLaunch' -Wait`n"
- FileWrite $R7 $R6
- StrCpy $R6 "} catch { exit 1 }`n"
- FileWrite $R7 $R6
- StrCpy $R6 "Remove-Item $$dest -Force -EA SilentlyContinue`n"
- FileWrite $R7 $R6
- StrCpy $R6 "exit 0"
- FileWrite $R7 $R6
- FileClose $R7
- ExecWait 'powershell -NoProfile -ExecutionPolicy Bypass -File "$R8"' $R9
- Delete $R8
- ${If} $R9 == "0"
- DetailPrint "WebView2 installed successfully."
- ${Else}
- DetailPrint "WebView2 install failed (code: $R9)."
- DetailPrint "Manual install: https://developer.microsoft.com/en-us/microsoft-edge/webview2/"
- ${EndIf}
- FunctionEnd
- Section "MainSection" SEC01
- SetOutPath "$INSTDIR"
- SetOverwrite on
- ; 与主程序同目录:…/release/nsis/x64/ -> …/release/steamSH.exe
- File "..\..\steamSH.exe"
- SectionEnd
- Section -AdditionalIcons
- WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" ""
- CreateDirectory "$SMPROGRAMS\steamSH"
- CreateShortCut "$SMPROGRAMS\steamSH\Uninstall.lnk" "$INSTDIR\uninst.exe"
- SectionEnd
- Section -Post
- WriteUninstaller "$INSTDIR\uninst.exe"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\steamSH.exe"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
- ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
- IntFmt $0 "0x%08X" $0
- WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "EstimatedSize" "$0"
- SectionEnd
- Section -WebView2
- Call InstallWebView2
- SectionEnd
- Section Uninstall
- Delete "$INSTDIR\steamSH.exe"
- Delete "$INSTDIR\${PRODUCT_NAME}.url"
- Delete "$INSTDIR\uninst.exe"
- Delete "$SMPROGRAMS\steamSH\Uninstall.lnk"
- RMDir "$SMPROGRAMS\steamSH"
- RMDir "$INSTDIR"
- DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
- DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_DIR_REGKEY}"
- SetAutoClose true
- SectionEnd
- Function un.onInit
- MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to remove $(^Name) and all its components?" IDYES +2
- Abort
- FunctionEnd
|