Сначала запустите блокнот с my.cfg и только потом запускайте сервис - PullRequest
0 голосов
/ 01 апреля 2010

Я устанавливаю вместе с моим приложением:
1) сервис, который запускает и останавливает мое приложение по мере необходимости
2) файл conf, который на самом деле содержит данные пользователя и который будет показан пользователю для изменения по мере необходимости (я даю пользователю возможность изменить его, запустив notepad.exe с моим файлом conf во время установки)

Проблема в том, что в моем коде устанавливаемая мной служба запускается до того, как пользователь сможет изменить файл conf. То, что я хотел бы, это:
1) сначала пользователь получает возможность изменить файл conf (запустите notepad.exe с файлом conf)
2) только после запуска услуги

<Component Id="MyService.exe" Guid="GUID">   
 <File Id="MyService.exe" Source="MyService.exe" Name="MyService.exe" KeyPath="yes" Checksum="yes" />  
 <ServiceInstall Id='ServiceInstall' DisplayName='MyService' Name='MyService' ErrorControl='normal' Start='auto' Type='ownProcess' Vital='yes'/>  
 <ServiceControl Id='ServiceControl' Name='MyService' Start='install' Stop='both' Remove='uninstall'/>  
</Component>  

<Component Id="my.conf" Guid="" NeverOverwrite="yes">  
 <File Id="my.cfg" Source="my.cfg_template" Name="my.cfg" KeyPath="yes" />  
</Component>  

[...]  

<Property Id="NOTEPAD">Notepad.exe</Property>  
<CustomAction Id="LaunchConfFile" Property="NOTEPAD" ExeCommand="[INSTALLDIR]my.cfg" Return="ignore" Impersonate="no" Execute="deferred"/>  
<!--Run only on installs-->  
<InstallExecuteSequence>  
 <Custom Action='LaunchConfFile' Before='InstallFinalize'>(NOT Installed) AND (NOT UPGRADINGPRODUCTCODE)</Custom>  
</InstallExecuteSequence>  

Что я делаю не так в приведенном выше коде и как я могу изменить его, чтобы добиться того, что мне нужно? (сначала запустите блокнот с моим файлом конфигурации, а затем запустите службу).

1 Ответ

0 голосов
/ 02 апреля 2010

Я бы расширил интерфейс MSI, чтобы запросить части, которые пользователь должен изменить, а затем обновил бы текстовый файл, используя элементы XmlFile и XmlConfig. Затем установщик Windows может зайти и запустить службу.

...