NSIS脚本---创建自定义页面

时间:2020-05-24 07:17:15

标签: nsis

我是NSIS的新手。这是开发人员提供的脚本。在这里,它从$ EXEDIR \ env.ini中读取“ xpath”和“ logonpath”,并写入setup.ini,安装程序会进一步进行读取。

在这里,我在编译时遇到错误,没有setup.ini文件->文件:“ setup.ini”->找不到文件。然后,我在脚本文件夹中创建了一个空白的setup.ini文件。错误消失了,但安装时未生成自定义页面。

看起来有些东西需要放入setup.ini文件中,我很误解。 请帮忙。

下面,我添加了env.ini文件结构以供参考。

fileScanner.nextLine()

env.ini结构

; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Test"
!define PRODUCT_VERSION "1.0.0"
!define PRODUCT_PUBLISHER "Test1"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Test"

SetCompressor lzma
; X64 compatibility
!include "x64.nsh"
; include for some of the windows messages defines
!include "winmessages.nsh"
; HKLM (all users) vs HKCU (current user) defines
!define env_hklm 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
!define env_hkcu 'HKCU "Environment"'

; MUI 1.67 compatible ------
!include "MUI2.nsh"
!include "InstallOptions.nsh"

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "Vessel.ico"

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
; !insertmacro MUI_PAGE_LICENSE "License.txt"


!insertmacro MUI_PAGE_COMPONENTS
; Directory page
;!insertmacro MUI_PAGE_DIRECTORY
var XPath
var logonPath
LangString XDRIVE_TITLE ${LANG_ENGLISH} "Enter the Test setup details"
LangString XDRIVE_SUBTITLE ${LANG_ENGLISH} "X Drive setup"
page custom defineXDrive
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page

!insertmacro MUI_PAGE_FINISH

; Language files
!insertmacro MUI_LANGUAGE "English"

; MUI end ------

Function .oninit
!insertmacro INSTALLOPTIONS_EXTRACT_AS "setup.ini" "setup.ini"

System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running."
Abort

FunctionEnd

Function .onInstSuccess
MessageBox MB_YESNO|MB_ICONQUESTION "It's strongly suggested you restart the \
  computer to finalize settings.$\nDo you want to restart?" IDNO +2
    Reboot
FunctionEnd

Function defineXDrive
!insertmacro MUI_HEADER_TEXT "$(XDRIVE_TITLE)" "$(XDRIVE_SUBTITLE)"
push $R0
push $R1
ReadINIStr $R1 "$EXEDIR\env.ini" "setup" "xpath"
ReadINIStr $R0 "$EXEDIR\env.ini" "setup" "logonpath"
!insertmacro INSTALLOPTIONS_WRITE "setup.ini" "Field 4" "State" "$R0"
!insertmacro INSTALLOPTIONS_WRITE "setup.ini" "Field 5" "State" "$R1"
pop $R0
pop $R1

# Display the page.
!insertmacro INSTALLOPTIONS_DISPLAY "setup.ini"

# Get the user entered values.
!insertmacro INSTALLOPTIONS_READ $logonPath "setup.ini" "Field 4" "State"
!insertmacro INSTALLOPTIONS_READ $XPath "setup.ini" "Field 5" "State"
FunctionEnd

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Test-Setup-19c_test.exe"
InstallDir "C:\Test"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show

Section "Platform" SEC01
;......
SectionEND

这是自定义页面,需要在阅读setup.ini文件后生成

This is the custom page, which need to be generated on reading setup.ini file

0 个答案:

没有答案