我用 WiX 创建了一个 MSI 安装程序。我专门针对 Windows XP SP3+ 它在安装完成时运行自定义操作,以通过 NSSM.exe 将应用程序注册为服务 从命令行运行时批处理文件执行其编写的操作,但作为一部分运行时安装程序完成安装我看到命令提示符打开并且脚本运行,但应用程序未注册。
<CustomAction Id="installLoft"
Directory="ModulesFolder"
ExeCommand="[ModulesFolder]winInstall.cmd"
Execute="deferred"
Return="check"
HideTarget="no"
Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="installLoft" Before="InstallFinalize"><![CDATA[ (NOT Installed) AND (NOT REMOVE) ]]></Custom>
</InstallExecuteSequence>
批处理脚本内容为:
@ECHO OFF
SET PATH=%PATH%;%APPDATA%\app1\
IF "%ProgramFiles(x86)%"=="" (
set PATH=%PATH%;%ProgramFiles%\app1\
) ELSE (
set PATH=%PATH%;%ProgramFiles(x86)%\app1\
)
"app1\modules\bin\nssm.exe" install my_service_name_app1 app1.cmd -g
因此,app1 是一个需要作为服务运行的脚本,因此需要将 NSSM.exe 所有组件/文件安装在正确的位置。
是否有一些我遗漏的 Win XP 警告?使用运行安装程序的同一用户手动运行批处理,服务已注册。
谢谢你的帮助。