nsis script modification

Let's take a look at the script generated by HM NIS Edit:
; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "My application"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "My company, Inc."
!define PRODUCT_WEB_SITE "http://www.mycompany.com"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\payload.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; MUI 1.67 supported ------
!include "MUI.nsh"

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

; Language Selection Dialog Settings
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "License Agreement.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

; Language files
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "d:\Setup.exe"
InstallDir "$PROGRAMFILES\My application"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show

Function .onInit
  !insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

Section "MainSection" SEC01
  SetOutPath "$INSTDIR"
  SetOverwrite ifnewer
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\snapshot_blob.bin"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\resources.pak"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\payload.exe"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\package.json"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nwjc.exe"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw_elf.dll"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw_200_percent.pak"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw_100_percent.pak"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw.exe"
  CreateDirectory "$SMPROGRAMS\My application"
  CreateShortCut "$SMPROGRAMS\My application\My application.lnk" "$INSTDIR\nw.exe"
  CreateShortCut "$DESKTOP\My application.lnk" "$INSTDIR\nw.exe"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw.dll"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\node.dll"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\natives_blob.bin"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nacl_irt_x86_64.nexe"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\libGLESv2.dll"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\libEGL.dll"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\icudtl.dat"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\ffmpeg.dll"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\d3dcompiler_47.dll"
  SetOutPath "$INSTDIR\app"
  SetOverwrite try
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\index.html"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\main.js"
  SetOutPath "$INSTDIR\app\static"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\biankuang3.png"
  SetOutPath "$INSTDIR\app\static\css"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\css\app.b9ead1a4c3122fd4b387b320010926f0.css"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\css\app.b9ead1a4c3122fd4b387b320010926f0.css.map"
  SetOutPath "$INSTDIR\app\static\data"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\data\data-pie.xml"
  SetOutPath "$INSTDIR\app\static\images"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\anniu1.png"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\anniu2.png"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\bdr-blueSky.png"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\bdr.png"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\biankuang.png"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\biankuang3.png"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\biankuang4.png"
  File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\bingzhuang.png"

.....

RMDir "$INSTDIR\locales"
  RMDir "$INSTDIR\app\static\styles"
  RMDir "$INSTDIR\app\static\script"
  RMDir "$INSTDIR\app\static\js"
  RMDir "$INSTDIR\app\static\img"
  RMDir "$INSTDIR\app\static\images\img\2"
  RMDir "$INSTDIR\app\static\images\img\1"
  RMDir "$INSTDIR\app\static\images"
  RMDir "$INSTDIR\app\static\data"
  RMDir "$INSTDIR\app\static\css"
  RMDir "$INSTDIR\app\static"
  RMDir "$INSTDIR\app"
  RMDir "$INSTDIR"

  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd


The middle part is skipped here, all of which are some additional files.

It is mainly to set the environment variables, refresh the icon and set the execution permission of the code.
1. Set the application icon:
Section -AdditionalIcons
  SetOutPath $INSTDIR
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateShortCut "$SMPROGRAMS\diyscreen\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
  CreateShortCut "$SMPROGRAMS\diyscreen\Uninstall.lnk" "$INSTDIR\uninst.exe"
  CreateShortCut "$SMPROGRAMS\diyscreen\diyscreen.lnk" "$INSTDIR\nw.exe" "" "$INSTDIR\pkgtools\tool.ico"
  CreateShortCut "$DESKTOP\diyscreen.lnk" "$INSTDIR\nw.exe" "" "$INSTDIR\pkgtools\tool.ico"
  Exec "ie4uinit -show"
SectionEnd

2. Environment variable settings and code execution permission settings
Section -Post
  AccessControl::ClearOnFile "$INSTDIR" "(S-1-1-0)" "FullAccess"
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\nw.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\xcopy.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
  WriteRegExpandStr HKCR ".vsz" "" "vszfile"
  WriteRegExpandStr HKCR "vszfile\DefaultIcon" "" "$INSTDIR\pkgtools\project.ico"
  WriteRegExpandStr HKCR "vszfile\shell\open\command" "" "$INSTDIR\nw.exe $\"%1$\""
  WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "diyscreen" "$INSTDIR"
  SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"
  Exec "ie4uinit -show"
SectionEnd

Description: AccessControl::ClearOnFile "$INSTDIR" "(S-1-1-0)" "FullAccess", set the directory permission after installation to everyone (read/write);

WriteRegExpandStr HKCR ".vsz" "" "vszfile"
  WriteRegExpandStr HKCR "vszfile\DefaultIcon" "" "$INSTDIR\pkgtools\project.ico"
  WriteRegExpandStr HKCR "vszfile\shell\open\command" "" "$INSTDIR\nw.exe $\"%1$\""
, .vsz is a file with a custom extension, and the last "%1" is the parameter to start the vsz file to specify nw.exe. If you double-click a .vsz file on the desktop, it will automatically open this self-defined file on the desktop after nw.exe is opened. Define the vsz file content. $\"table is the escape of ".

WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "diyscreen" "$INSTDIR"
, set the environment variable for use in the program.

SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"
Refresh environment variables.

Exec "ie4uinit -show"
Refresh the icon of the custom format file, otherwise it will take effect after restarting.

Remember to import !include "winmessages.nsh", otherwise an error will be reported.

Listed above are the places that need to be modified manually, and the rest are automatically generated by HM NIS Edit. After the modification is completed, ctrl+f9 recompile and run.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326231472&siteId=291194637