init
This commit is contained in:
227
mc_test/node_modules/app-builder-lib/templates/nsis/include/installer.nsh
generated
vendored
Executable file
227
mc_test/node_modules/app-builder-lib/templates/nsis/include/installer.nsh
generated
vendored
Executable file
@ -0,0 +1,227 @@
|
||||
# functions (nsis macro) for installer
|
||||
|
||||
!include "extractAppPackage.nsh"
|
||||
|
||||
!ifdef APP_PACKAGE_URL
|
||||
!include webPackage.nsh
|
||||
!endif
|
||||
|
||||
!macro installApplicationFiles
|
||||
!ifdef APP_BUILD_DIR
|
||||
File /r "${APP_BUILD_DIR}\*.*"
|
||||
!else
|
||||
!ifdef APP_PACKAGE_URL
|
||||
Var /GLOBAL packageFile
|
||||
Var /GLOBAL isPackageFileExplicitlySpecified
|
||||
|
||||
${StdUtils.GetParameter} $packageFile "package-file" ""
|
||||
${if} $packageFile == ""
|
||||
!ifdef APP_64_NAME
|
||||
!ifdef APP_32_NAME
|
||||
!ifdef APP_ARM64_NAME
|
||||
${if} ${IsNativeARM64}
|
||||
StrCpy $packageFile "${APP_ARM64_NAME}"
|
||||
StrCpy $1 "${APP_ARM64_HASH}"
|
||||
${elseif} ${IsNativeAMD64}
|
||||
StrCpy $packageFile "${APP_64_NAME}"
|
||||
StrCpy $1 "${APP_64_HASH}"
|
||||
${else}
|
||||
StrCpy $packageFile "${APP_32_NAME}"
|
||||
StrCpy $1 "${APP_32_HASH}"
|
||||
${endif}
|
||||
!else
|
||||
${if} ${RunningX64}
|
||||
StrCpy $packageFile "${APP_64_NAME}"
|
||||
StrCpy $1 "${APP_64_HASH}"
|
||||
${else}
|
||||
StrCpy $packageFile "${APP_32_NAME}"
|
||||
StrCpy $1 "${APP_32_HASH}"
|
||||
${endif}
|
||||
!endif
|
||||
!else
|
||||
StrCpy $packageFile "${APP_64_NAME}"
|
||||
StrCpy $1 "${APP_64_HASH}"
|
||||
!endif
|
||||
!else
|
||||
StrCpy $packageFile "${APP_32_NAME}"
|
||||
StrCpy $1 "${APP_32_HASH}"
|
||||
!endif
|
||||
StrCpy $4 "$packageFile"
|
||||
StrCpy $packageFile "$EXEDIR/$packageFile"
|
||||
StrCpy $isPackageFileExplicitlySpecified "false"
|
||||
${else}
|
||||
StrCpy $isPackageFileExplicitlySpecified "true"
|
||||
${endIf}
|
||||
|
||||
# we do not check file hash is specifed explicitly using --package-file because it is clear that user definitely want to use this file and it is user responsibility to check
|
||||
# 1. auto-updater uses --package-file and validates checksum
|
||||
# 2. user can user another package file (use case - one installer suitable for any app version (use latest version))
|
||||
${if} ${FileExists} "$packageFile"
|
||||
${if} $isPackageFileExplicitlySpecified == "true"
|
||||
Goto fun_extract
|
||||
${else}
|
||||
${StdUtils.HashFile} $3 "SHA2-512" "$packageFile"
|
||||
${if} $3 == $1
|
||||
Goto fun_extract
|
||||
${else}
|
||||
MessageBox MB_OK "Package file $4 found locally, but checksum doesn't match — expected $1, actual $3.$\r$\nLocal file is ignored and package will be downloaded from Internet."
|
||||
${endIf}
|
||||
${endIf}
|
||||
${endIf}
|
||||
|
||||
!insertmacro downloadApplicationFiles
|
||||
|
||||
fun_extract:
|
||||
!insertmacro extractUsing7za "$packageFile"
|
||||
|
||||
# electron always uses per user app data
|
||||
${if} $installMode == "all"
|
||||
SetShellVarContext current
|
||||
${endif}
|
||||
|
||||
!insertmacro moveFile "$packageFile" "$LOCALAPPDATA\${APP_PACKAGE_STORE_FILE}"
|
||||
|
||||
${if} $installMode == "all"
|
||||
SetShellVarContext all
|
||||
${endif}
|
||||
!else
|
||||
!insertmacro extractEmbeddedAppPackage
|
||||
# electron always uses per user app data
|
||||
${if} $installMode == "all"
|
||||
SetShellVarContext current
|
||||
${endif}
|
||||
!insertmacro copyFile "$EXEPATH" "$LOCALAPPDATA\${APP_INSTALLER_STORE_FILE}"
|
||||
${if} $installMode == "all"
|
||||
SetShellVarContext all
|
||||
${endif}
|
||||
!endif
|
||||
!endif
|
||||
|
||||
File "/oname=${UNINSTALL_FILENAME}" "${UNINSTALLER_OUT_FILE}"
|
||||
!macroend
|
||||
|
||||
!macro registryAddInstallInfo
|
||||
WriteRegStr SHELL_CONTEXT "${INSTALL_REGISTRY_KEY}" InstallLocation "$INSTDIR"
|
||||
WriteRegStr SHELL_CONTEXT "${INSTALL_REGISTRY_KEY}" KeepShortcuts "true"
|
||||
WriteRegStr SHELL_CONTEXT "${INSTALL_REGISTRY_KEY}" ShortcutName "${SHORTCUT_NAME}"
|
||||
!ifdef MENU_FILENAME
|
||||
WriteRegStr SHELL_CONTEXT "${INSTALL_REGISTRY_KEY}" MenuDirectory "${MENU_FILENAME}"
|
||||
!endif
|
||||
|
||||
${if} $installMode == "all"
|
||||
StrCpy $0 "/allusers"
|
||||
StrCpy $1 ""
|
||||
${else}
|
||||
StrCpy $0 "/currentuser"
|
||||
StrCpy $1 ""
|
||||
${endIf}
|
||||
|
||||
WriteRegStr SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" DisplayName "${UNINSTALL_DISPLAY_NAME}$1"
|
||||
# https://github.com/electron-userland/electron-builder/issues/750
|
||||
StrCpy $2 "$INSTDIR\${UNINSTALL_FILENAME}"
|
||||
WriteRegStr SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" UninstallString '"$2" $0'
|
||||
WriteRegStr SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" QuietUninstallString '"$2" $0 /S'
|
||||
|
||||
WriteRegStr SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" "DisplayVersion" "${VERSION}"
|
||||
!ifdef UNINSTALLER_ICON
|
||||
WriteRegStr SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" "DisplayIcon" "$INSTDIR\uninstallerIcon.ico"
|
||||
!else
|
||||
WriteRegStr SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" "DisplayIcon" "$appExe,0"
|
||||
!endif
|
||||
|
||||
!ifdef COMPANY_NAME
|
||||
WriteRegStr SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" "Publisher" "${COMPANY_NAME}"
|
||||
!endif
|
||||
|
||||
WriteRegDWORD SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" NoModify 1
|
||||
WriteRegDWORD SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" NoRepair 1
|
||||
|
||||
# allow user to define ESTIMATED_SIZE to avoid GetSize call
|
||||
!ifdef ESTIMATED_SIZE
|
||||
IntFmt $0 "0x%08X" ${ESTIMATED_SIZE}
|
||||
!else
|
||||
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
||||
IntFmt $0 "0x%08X" $0
|
||||
!endif
|
||||
|
||||
WriteRegDWORD SHELL_CONTEXT "${UNINSTALL_REGISTRY_KEY}" "EstimatedSize" "$0"
|
||||
!macroend
|
||||
|
||||
!macro cleanupOldMenuDirectory
|
||||
${if} $oldMenuDirectory != ""
|
||||
!ifdef MENU_FILENAME
|
||||
${if} $oldMenuDirectory != "${MENU_FILENAME}"
|
||||
RMDir "$SMPROGRAMS\$oldMenuDirectory"
|
||||
${endIf}
|
||||
!else
|
||||
RMDir "$SMPROGRAMS\$oldMenuDirectory"
|
||||
!endif
|
||||
${endIf}
|
||||
!macroend
|
||||
|
||||
!macro createMenuDirectory
|
||||
!ifdef MENU_FILENAME
|
||||
CreateDirectory "$SMPROGRAMS\${MENU_FILENAME}"
|
||||
ClearErrors
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
!macro addStartMenuLink keepShortcuts
|
||||
!ifndef DO_NOT_CREATE_START_MENU_SHORTCUT
|
||||
# The keepShortcuts mechanism is NOT enabled.
|
||||
# Menu shortcut will be recreated.
|
||||
${if} $keepShortcuts == "false"
|
||||
!insertmacro cleanupOldMenuDirectory
|
||||
!insertmacro createMenuDirectory
|
||||
|
||||
CreateShortCut "$newStartMenuLink" "$appExe" "" "$appExe" 0 "" "" "${APP_DESCRIPTION}"
|
||||
# clear error (if shortcut already exists)
|
||||
ClearErrors
|
||||
WinShell::SetLnkAUMI "$newStartMenuLink" "${APP_ID}"
|
||||
# The keepShortcuts mechanism IS enabled.
|
||||
# The menu shortcut could either not exist (it shouldn't be recreated) or exist in an obsolete location.
|
||||
${elseif} $oldStartMenuLink != $newStartMenuLink
|
||||
${andIf} ${FileExists} "$oldStartMenuLink"
|
||||
!insertmacro createMenuDirectory
|
||||
|
||||
Rename $oldStartMenuLink $newStartMenuLink
|
||||
WinShell::UninstShortcut "$oldStartMenuLink"
|
||||
WinShell::SetLnkAUMI "$newStartMenuLink" "${APP_ID}"
|
||||
|
||||
!insertmacro cleanupOldMenuDirectory
|
||||
${endIf}
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
!macro addDesktopLink keepShortcuts
|
||||
!ifndef DO_NOT_CREATE_DESKTOP_SHORTCUT
|
||||
# https://github.com/electron-userland/electron-builder/pull/1432
|
||||
${ifNot} ${isNoDesktopShortcut}
|
||||
# The keepShortcuts mechanism is NOT enabled.
|
||||
# Shortcuts will be recreated.
|
||||
${if} $keepShortcuts == "false"
|
||||
CreateShortCut "$newDesktopLink" "$appExe" "" "$appExe" 0 "" "" "${APP_DESCRIPTION}"
|
||||
ClearErrors
|
||||
WinShell::SetLnkAUMI "$newDesktopLink" "${APP_ID}"
|
||||
# The keepShortcuts mechanism IS enabled.
|
||||
# The desktop shortcut could exist in an obsolete location (due to name change).
|
||||
${elseif} $oldDesktopLink != $newDesktopLink
|
||||
${andIf} ${FileExists} "$oldDesktopLink"
|
||||
Rename $oldDesktopLink $newDesktopLink
|
||||
WinShell::UninstShortcut "$oldDesktopLink"
|
||||
WinShell::SetLnkAUMI "$newDesktopLink" "${APP_ID}"
|
||||
|
||||
!ifdef RECREATE_DESKTOP_SHORTCUT
|
||||
${elseif} $oldDesktopLink != $newDesktopLink
|
||||
${orIfNot} ${FileExists} "$oldDesktopLink"
|
||||
${ifNot} ${isUpdated}
|
||||
CreateShortCut "$newDesktopLink" "$appExe" "" "$appExe" 0 "" "" "${APP_DESCRIPTION}"
|
||||
ClearErrors
|
||||
WinShell::SetLnkAUMI "$newDesktopLink" "${APP_ID}"
|
||||
${endIf}
|
||||
!endif
|
||||
${endIf}
|
||||
System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
|
||||
${endIf}
|
||||
!endif
|
||||
!macroend
|
||||
Reference in New Issue
Block a user