Необязательные атрибуты : вы можете опустить Remove attribute
, а также настроить службу на остановку и запуск только при установке, оставив служба работает, даже если вы удалите ее (что может быть полезно, так как вы не можете знать, зависят ли другие приложения от службы - вы можете подумать и определить, нужно ли вам изначально запускать службу, но это, вероятно, не нужно):
<Component Id="SmartCardServiceStarter" Directory="INSTALLFOLDER" Guid="PUT-GUID-HERE" KeyPath="yes">
<ServiceControl Id="SmartCardServiceStarter"
Start="install"
Stop="install"
Name="SCardSvr"
Wait="yes" />
<!-- <Condition><![CDATA[STARTSERVICEONINSTALL <> "false"]]></Condition> -->
</Component>
Таблица ServiceControl : Вы можете наблюдать результат различных комбинаций атрибутов в элементе ServiceControl (источник WiX) с помощью просматривая скомпилированный MSI с Orca или аналогичным инструментом (ближе к низу, предпочитайте Orca вместо SuperOrca , я видел, что последние не изменились) и проверяю Таблица ServiceControl (законченный MSI). Изменения будут отображаться в "Event" column
. Сопоставьте значения битовых флагов в соответствии с документацией MSI SDK.
Встроенная системная служба : видя, что это системная служба, я полагаю, вы можете настроить ее только на запуск и оставить ее включенной, не добавляя никакой остановки вообще, но вам может понадобиться прекратить замену собственных файлов во время крупных обновлений? Я не знаю сценарий. Пожалуйста, тщательно протестируйте и используйте виртуальный для подобных вещей. Очевидно, я знаю. Основные сценарии обновления, вероятно, будут диктовать, что вы хотите остановить установку, получить обновления и предотвратить блокировки файлов, которые вы хотите заменить.
Условие : Вы должны быть в состоянии использовать это условие для контроля, хотите ли вы, чтобы выполнялись действия службы или нет. Фактически условие определяет, будет ли установлен компонент, на котором размещены эти действия службы, или нет, следовательно, определяет, будут ли действия службы выполняться или нет (также).