Comment installer un service avec des fichiers supplémentaires dans WiX et définir quel fichier est le fichier EXE du service?Installation d'un service NT multi-fichiers à l'aide de WiX (2.0)
Scénario: J'avais un service qui était juste un seul fichier EXE et installé en tant que service Windows NT dans WiX avec ce code:
<Component Id='InstallMyServiceComponent' Guid='{....}' DiskId='1'>
<File Id='InstallMyServiceEXEFile' LongName='MyService.exe'
Name='MyServ.exe' src='MyService/bin/release/MyService.exe' KeyPath='yes'/>
<ServiceInstall Id='InstallMyService' Name='MyService' Description='My Service'
ErrorControl='normal' Start='auto' Type='ownProcess' Vital='yes' />
<ServiceControl Id='UninstallMyService' Name='MyService' Remove='uninstall'
Wait='yes' />
</Component>
<Component Id='RunMyServiceComponent' Guid='.......'>
<ServiceControl Id='RunMyService' Name='MyService' Start='install'
Stop='uninstall' Wait='no' />
</Component>
et j'avais une caractéristique qui permettrait ensuite d'installer et éventuellement démarrer ce service.
Maintenant, mon problème est - maintenant mon service a grandi, et le seul EXE n'est plus un seul EXE - c'est plusieurs fichiers, EXE, DLL, et quelques fichiers de support.
Cependant, comment puis-je l'installer maintenant?
J'ai essayé d'avoir un composant avec tous mes fichiers
<Component Id="MyService" Guid="......" DiskId="1">
<File Id="fileMyService_framework_dll" LongName="Framework.dll"
Name="Framewrk.DLL" src="MyService\Framework.dll" />
<File Id="fileMyService_dal_dll" LongName="MyServiceDAL.dll"
Name="SrvcDAL.DLL" src="MyService\ServiceDAL.dll" />
<File Id="fileMyService_helpers_dll" LongName="Helpers.dll"
Name="Helpers.DLL" src="MyService\Helpers.dll" />
<File Id="fileMyService_exe" LongName="MyService.exe"
Name="MySrv.EXE" src="MyService\MyService.exe" />
</Component>
d'abord, j'ai essayé d'ajouter juste le ServiceInstalle et les balises serviceControl à ce composant:
<Component Id="MyService" Guid="......" DiskId="1">
<File Id="fileMyService_framework_dll" LongName="Framework.dll"
Name="Framewrk.DLL" src="MyService\Framework.dll" />
<File Id="fileMyService_dal_dll" LongName="MyServiceDAL.dll"
Name="SrvcDAL.DLL" src="MyService\ServiceDAL.dll" />
<File Id="fileMyService_helpers_dll" LongName="Helpers.dll"
Name="Helpers.DLL" src="MyService\Helpers.dll" />
<File Id="fileMyService_exe" LongName="MyService.exe"
Name="MySrv.EXE" src="MyService\MyService.exe" />
<ServiceInstall Id='InstallMyService' Name='MyService'
Description='My Service' ErrorControl='normal' Start='auto'
Type='ownProcess' Vital='yes' />
<ServiceControl Id='UninstallMyService' Name='MyService'
Remove='uninstall' Wait='yes' />
</Component>
mais mon « cadre. dll "est défini comme le chemin d'accès source pour le service en cours de création ........
J'ai donc pensé créer un second composant pour installer le service en utilisant ServiceInstall , et je ferais simplement référence à ce fichier EXE de service en utilisant FileRef - mais cela ne semble pas exister (au moins dans Wix2).
<Component Id='InstallMyServiceComponent' Guid='{....}' DiskId='1'>
<FileRef Id='fileMyService_exe' KeyPath='yes'/>
<ServiceInstall Id='InstallMyService' Name='MyService'
Description='My Service' ErrorControl='normal' Start='auto'
Type='ownProcess' Vital='yes' />
<ServiceControl Id='UninstallMyService' Name='MyService'
Remove='uninstall' Wait='yes' />
</Component>
Alors - ce qui est un pauvre auteur WiX dois faire pour installer tous les fichiers nécessaires, et toujours obtenir l'installation de service NT pour récupérer le fichier EXE correct (pas seulement un fichier arbitraire de la liste des fichiers du composant) ??
Marc
Vous avez oublié de définir KeyPath = 'yes' sur l'exe dans l'élément File. –
Merci, Shay - La réponse de Rob semble confirmer votre déclaration - grandement appréciée! –