feat: NSIS 中文安装器(年糕历险记-Setup-v0.1.0.exe 实际构建+静默安装验证)、菜单鼠标可见性修复、首页 UI 原版复刻(土质背景/原版按钮/splash/版本角标)、全 goroutine 崩溃兜底
This commit is contained in:
95
tools/nsis/nsis-3.10/Examples/install-shared.nsi
Normal file
95
tools/nsis/nsis-3.10/Examples/install-shared.nsi
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
|
||||
This example script installs a simple application for all users on a machine.
|
||||
|
||||
All-users installers should only write to HKLM, $ProgramFiles, $CommonFiles and the
|
||||
"All context" versions of $LocalAppData, $Templates, $SMPrograms etc.
|
||||
|
||||
It should not write to HKCU nor any folders in the users profile!
|
||||
If the application requires writable template data in $AppData it
|
||||
must copy the required files from a shared location the
|
||||
first time a user launches the application.
|
||||
|
||||
*/
|
||||
|
||||
!define NAME "All-users example"
|
||||
!define REGPATH_UNINSTSUBKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}"
|
||||
Name "${NAME}"
|
||||
OutFile "Install ${NAME}.exe"
|
||||
Unicode True
|
||||
RequestExecutionLevel Admin ; Request admin rights on WinVista+ (when UAC is turned on)
|
||||
InstallDir "$ProgramFiles\$(^Name)"
|
||||
InstallDirRegKey HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString"
|
||||
|
||||
!include LogicLib.nsh
|
||||
!include Integration.nsh
|
||||
|
||||
|
||||
Page Directory
|
||||
Page InstFiles
|
||||
|
||||
Uninstpage UninstConfirm
|
||||
Uninstpage InstFiles
|
||||
|
||||
|
||||
!macro EnsureAdminRights
|
||||
UserInfo::GetAccountType
|
||||
Pop $0
|
||||
${If} $0 != "admin" ; Require admin rights on WinNT4+
|
||||
MessageBox MB_IconStop "Administrator rights required!"
|
||||
SetErrorLevel 740 ; ERROR_ELEVATION_REQUIRED
|
||||
Quit
|
||||
${EndIf}
|
||||
!macroend
|
||||
|
||||
Function .onInit
|
||||
SetShellVarContext All
|
||||
!insertmacro EnsureAdminRights
|
||||
FunctionEnd
|
||||
|
||||
Function un.onInit
|
||||
SetShellVarContext All
|
||||
!insertmacro EnsureAdminRights
|
||||
FunctionEnd
|
||||
|
||||
|
||||
Section "Program files (Required)"
|
||||
SectionIn Ro
|
||||
|
||||
SetOutPath $InstDir
|
||||
WriteUninstaller "$InstDir\Uninst.exe"
|
||||
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayName" "${NAME}"
|
||||
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayIcon" "$InstDir\MyApp.exe,0"
|
||||
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString" '"$InstDir\Uninst.exe"'
|
||||
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "QuietUninstallString" '"$InstDir\Uninst.exe" /S'
|
||||
WriteRegDWORD HKLM "${REGPATH_UNINSTSUBKEY}" "NoModify" 1
|
||||
WriteRegDWORD HKLM "${REGPATH_UNINSTSUBKEY}" "NoRepair" 1
|
||||
|
||||
!tempfile APP
|
||||
!makensis '-v2 "-DOUTFILE=${APP}" "-DNAME=NSISSharedAppExample" -DCOMPANY=Nullsoft "AppGen.nsi"' = 0
|
||||
File "/oname=$InstDir\MyApp.exe" "${APP}" ; Pretend that we have a real application to install
|
||||
!delfile "${APP}"
|
||||
SectionEnd
|
||||
|
||||
Section "Start Menu shortcut"
|
||||
CreateShortcut /NoWorkingDir "$SMPrograms\${NAME}.lnk" "$InstDir\MyApp.exe"
|
||||
SectionEnd
|
||||
|
||||
|
||||
!macro DeleteFileOrAskAbort path
|
||||
ClearErrors
|
||||
Delete "${path}"
|
||||
IfErrors 0 +3
|
||||
MessageBox MB_ABORTRETRYIGNORE|MB_ICONSTOP 'Unable to delete "${path}"!' IDRETRY -3 IDIGNORE +2
|
||||
Abort "Aborted"
|
||||
!macroend
|
||||
|
||||
Section -Uninstall
|
||||
!insertmacro DeleteFileOrAskAbort "$InstDir\MyApp.exe"
|
||||
Delete "$InstDir\Uninst.exe"
|
||||
RMDir "$InstDir"
|
||||
DeleteRegKey HKLM "${REGPATH_UNINSTSUBKEY}"
|
||||
|
||||
${UnpinShortcut} "$SMPrograms\${NAME}.lnk"
|
||||
Delete "$SMPrograms\${NAME}.lnk"
|
||||
SectionEnd
|
||||
Reference in New Issue
Block a user