在我的.nsi文件中,我正在呼叫ExecWait '"$INSTDIR\application.exe" ' $0。在application.exe中,我将返回成功和失败的退出代码。如何在.nsi文件中捕获那些退出代码。
Function Check32or64BitWindows
${If} ${RunningX64}
strcpy $INSTDIR "$PROGRAMFILES64\${APP_FULL_PATH}"
SetRegView 64
${Else}
SetRegView 32
strcpy $INSTDIR "$PROGRAMFILES32\${APP_FULL_PATH}"
${EndIf}
FunctionEnd
Run Code Online (Sandbox Code Playgroud)
如果检测到旧版本,则执行
ExecWait '"$INSTDIR\uninst.exe" /S' $0
Run Code Online (Sandbox Code Playgroud)
我的卸载部分:
Section uninstall
!define APP_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_VENDOR} ${APP_NAME}"
!define APP_UNINST_ROOT_KEY "HKLM"
DeleteRegKey ${APP_UNINST_ROOT_KEY} "${APP_UNINST_KEY}"
SectionEnd
Run Code Online (Sandbox Code Playgroud)
Section -Post
WriteRegStr ${APP_UNINST_ROOT_KEY} "${APP_UNINST_KEY}" "DisplayName" "${APP_FULL_NAME}"
SectionEnd
Run Code Online (Sandbox Code Playgroud)
Post部分在Windows 64位注册表视图中创建注册表项,但卸载程序不会删除注册表项.
如果我删除了对64位操作系统的检查,那么在Wow6432Node中创建和删除注册表就可以正常工作.
当我netstat -a |find /C $portNumber在命令提示符下执行时,我得到给定端口号存在的总行数.
我想在任何变量中获得相同的计数,以便我可以检查NSIS中的端口是否已被占用或空闲.
我正在排除下面的命令,我尝试了很多方面,但是我无法在变量或堆栈中获得ExecDos :: exec的输出.
ExecDos::exec "netstat -a |find /C '$portNumber'| $output"
Run Code Online (Sandbox Code Playgroud)