У нас есть установщик wix, при новой установке требуется создать нашу базу данных и запустить наш сервис после ее создания. Поскольку службы запускаются задолго до InstallFinalize, служба не запускается, поскольку база данных не была создана. Я пытался использовать InstallFiles для запуска создания базы данных, но приложение создания базы данных так и не запустилось.
Далее я перешел к s c .exe, запустите «Мой сервер», как указано здесь и отложенное действие , и это не сработало.
Я удалил пользовательское действие для запуска службы и попытался ScheduleReboot , который не побуждал пользователя к перезагрузке и вынудил меня перезагрузить компьютер, чтобы иметь возможность удалить.
Как мне либо запланировать запуск службы после создания базы данных, либо принудительно выполнить перезагрузку, которая предложит пользователю перезагрузить систему, чтобы изменения вступили в силу?
<InstallExecuteSequence>
<ScheduleReboot After='InstallFinalize'>NOT Installed AND NOT
WIX_UPGRADE_DETECTED</ScheduleReboot>
</InstallExecuteSequence>
Service Controller
<Component Id="ServiceComponent" Directory="BIN_FOLDER" MultiInstance="yes"
Guid="{04EAB7AF-2DC5-4807-85D7-BA9CDE65FD82}" >
<File Id="ServerExe" KeyPath="yes" Vital="yes" Source="$(var.BinFilesSourcePath)\MyServer.exe" />
<ServiceInstall
Id="ServiceInstaller"
Name="My Server"
DisplayName="My Server"
Type="ownProcess"
Start="auto"
ErrorControl="normal"
Description="My Server"
Account="NT AUTHORITY\LocalService"
Vital="yes"
Interactive="no" />
<ServiceControl
Id="StartService"
Name="My Server"
Remove="uninstall"
Start="install"
Stop="both"
Wait="yes" />
</Component>
Создать базу данных
<CustomAction
Id="RunDataUtility"
Directory="BIN_FOLDER" ExeCommand="[BIN_FOLDER]\DataUtility.exe"
Execute="immediate" Impersonate="yes" Return="ignore" />
<InstallExecuteSequence>
<Custom Action="RunDataUtility"
After="InstallFinalize" ><![CDATA[ NOT(Installed) ]]></Custom>
</InstallExecuteSequence>