WiXでMSIインストーラーを作成しました。特にWindowsXPSP3 +を対象としています。インストールの完了時にカスタムアクションを実行して、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が必要です。すべてのコンポーネント/ファイルが適切な場所にインストールされます。
私が見逃しているいくつかのWinXPの警告はありますか?インストーラーを実行したのと同じユーザーでバッチを手動で実行すると、サービスが登録されます。
ご協力いただきありがとうございます。