Служба Windows без [RunInstaller] - PullRequest
       11

Служба Windows без [RunInstaller]

0 голосов
/ 15 сентября 2010

Я написал службу Windows, используя C # .NET. Чтобы установить службу, я добавил класс «Project Installer», унаследованный от класса Installer и украшенный [RunInstaller].

Без оформления [RunInstaller] я не могу установить службу, используя installutil .

Почему при развертывании службы с использованием таблицы ServiceInstall в MSI MSI смогла установить службу без [RunInstaller] украшения?

PS: я использовал WiX для создания MSI:

<ServiceInstall Id="RegistryReaderInstall" DisplayName="Registry Reader Service" Name="Registry Reader" ErrorControl="critical" Start="auto" Type="ownProcess"/>

Ответы [ 2 ]

3 голосов
/ 15 сентября 2010

Я написал статью в блоге об этом 4 года назад:

MSI vs .NET

В основном ответ уровня эксперта состоит в том, что пользовательские действия класса установщика - злоАнтипаттерн изобретен сообществом .NET.Они являются расширением шаблона RegSvr32 и не соответствуют декларативному дизайну на основе таблиц MSI и не должны использоваться.

Диспетчер управления службами - это неуправляемый API (Advapi32.dll), который предшествует.NET Framework.Установщик Windows уже имел отличную поддержку в 1990-х годах для SCM еще до появления .NET.Затем появился .NET, чтобы создать шаблон для написания управляемых сервисов, и хотя возможность наследования от ServiceBase для получения большей части сантехники бесплатно - это хорошо, использование InstalUtil - нет.

Кстати, вы также должны перейти в DOS и проверить команду SC.Это позволит вам выполнять всевозможные действия по установке службы в случае, если вам нужно что-то делать в среде разработки без запуска MSI.

1 голос
/ 15 сентября 2010

В основном WiX не вызывает ProjectInstaller;он просто использует таблицы MSI.

Если вам действительно нужно вызвать ProjectInstaller (потому что он настраивает другие компоненты), тогда вам нужно использовать настраиваемое действие WiX .Обратите внимание, что это не считается лучшим вариантом ( WiX-пользователи ).

...