「ntp-clientとsocket.ioでサービス作成を試してみる」で作成したファイルをnssmでWindowsサービスとして動かすアプリをWix Toolsetでインストールファイルを作成してみた。
nssmをダウンロードしてくることが最初。
本当はnode.jsのインストーラも同梱した方がよいような気がするが,ここでは前の記事でインストールしたようにnode.exeはzipで展開してcmdファイルに
[node.exeパス] serv.js
を記述したserve.cmdファイルを用意て同梱した。
wxsファイルの例は添付します。
<?xml version="1.0" encoding="utf-8"?> <!−− # This comment is generated by WixEdit, the specific commandline # arguments for the WiX Toolset are stored here. candleArgs: lightArgs: "<projectname>.wixobj" -out "<projectname>.msi" <extensions> -cultures:ja-JP −−> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="E5C926F4-5511-480D-BDCE-0222B5C6A1A1" Name="SocketIO_TEST 作品" Language="1041" Version="0.0.0.1" Manufacturer="Take3's Web" UpgradeCode="F8DE7934-6B08-42E4-A0A0-2086A5612F23" Codepage="932"> <Package Description="Test file in a Product" Comments="Simple test" InstallerVersion="200" Compressed="yes" /> <Media Id="1" Cabinet="simple.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder" Name="PFiles"> <Directory Name="SocketIO_TEST" Id="SOCKETIO_TEST"> <Directory Id="NODE_MODULES" Name="node_modules"> ... 容量制限のため省略 ... <Component Id="Serv.js"> <File Id="SERV.JS" Name="serv.js" Source=".\serv.js" /> </Component> <Component Id="GetNtp.js"> <File Id="GETNTP.JS" Name="GetNtp.js" Source=".\GetNtp.js" /> </Component> <Component Id="SocketIOHandler.js"> <File Id="SOCKETIOHANDLER.JS" Name="SocketIOHandler.js" Source=".\SocketIOHandler.js" /> </Component> <Component Id="nssm.exe"> <File Id="NSSM.EXE" Name="nssm.exe" Source=".\nssm.exe" /> <RegistryKey Key="SYSTEM\CurrentControlSet\Services\SocketIO_TEST" Root="HKLM" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes"> <RegistryValue Value="16" Type="integer" Name="Type" /> <RegistryValue Name="Start" Type="integer" Value="2" /> <RegistryValue Name="ErrorControl" Type="integer" Value="1" /> <RegistryValue Name="WOW64" Type="integer" Value="332" /> <RegistryValue Name="ObjectName" Type="string" Value="LocalSystem" /> <RegistryValue Name="DelayedAutostart" Type="integer" Value="0" /> <RegistryValue Name="FailureActionsOnNonCrashFailures" Type="integer" Value="1" /> <RegistryKey Id="Parameters" Key="Parameters" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes"> <RegistryValue Name="Application" Type="expandable" Value="[SOCKETIO_TEST]serve.cmd" /> <RegistryValue Name="AppParameters" Type="expandable" Value="" /> <RegistryValue Name="AppDirectory" Type="expandable" Value="[SOCKETIO_TEST]" /> <RegistryKey Id="AppExit" Key="AppExit" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes"> <RegistryValue Action="write" Type="string" Value="Restart" /> </RegistryKey> </RegistryKey> </RegistryKey> <ServiceInstall Name="SocketIO_TEST" Type="ownProcess" Start="auto" ErrorControl="normal" Description="SocketIO_TEST作品" DisplayName="SocketIO_TEST" /> <ServiceControl Id="StartService" Name="SocketIO_TEST" Start="install" Stop="both" Remove="uninstall" Wait="yes" /> </Component> <Component Id="serve.cmd"> <File Id="SERVE.CMD" Name="serve.cmd" Source="serve.cmd" /> </Component> <Component Id="index.html"> <File Id="INDEX.HTML_2" Name="index.html" Source="index.html" /> </Component> <Component Id="package.json"> <File Id="PACKAGE.JSON_40" Name="package.json" Source="package.json" /> </Component> <Component Id="package_lock.json"> <File Id="PACKAGE_LOCK.JSON" Name="package-lock.json" Source="package-lock.json" /> </Component> </Directory> </Directory> </Directory> <Feature Id="DefaultFeature" Title="Main Feature" Level="1"> <ComponentRef Id="NODE_NTP_CLIENT" /> <ComponentRef Id="NODE_NTP_CLIENT.CMD" /> <ComponentRef Id="HISTORY.MD" /> ... 容量制限のため省略...