Отмена регистрации служб Windows во время установки (Wix) - PullRequest
0 голосов
/ 04 января 2019

Старая версия нашего установщика продукта, использующая что-то еще, кроме того, что Wix «забывает», чтобы отменить регистрацию установленной службы при удалении.

Если мы запустим текущий установщик (используя Wix), он взорвется с «Доступ запрещен», когда он хочет установить службу.

Чтобы противостоять этому, я добавил в компонент, который устанавливаетобслуживайте следующее:

<RemoveRegistryKey Id="ServiceRegistrationRouter" Action="removeOnInstall" Key="SYSTEM\CurrentControlSet\services\Router" Root="HKLM"/>

«RemoveRegistryValues» (последовательность 2600) запланировано задолго до «InstallServices» (последовательность 5800), так что следует очистить записи реестра, которые остались в прошлом.

работает как шарм, но я все еще получаю «Доступ запрещен».Поэтому, несмотря на то, что записи реестра пропали, Windows по-прежнему удерживает службу.

Я знаю, что «sc delete» решит проблему, но, если возможно, я хочу остаться в стороне от настраиваемого действия.

Возможно ли это?

1 Ответ

0 голосов
/ 07 января 2019

Создайте отдельный Component и добавьте его к желаемому ComponentGroup.Это будет выглядеть так:

<Component Id="C_RemoveOldServices" Guid="B7574124-A3A8-4535-A14E-616E5024CA7F" KeyPath="yes">
            <ServiceControl Id="old_service1" Name="Service 1" Remove="install" Wait="no"/>
            <ServiceControl Id="old_service2" Name="Service 2" Remove="install" Wait="no"/>
            <ServiceControl Id="old_service3" Name="Service 3" Remove="install" Wait="no"/>
            <ServiceControl Id="old_service4" Name="Service 4" Remove="install" Wait="no"/>
            <Condition>![CDATA[NOT Installed]]</Condition>
</Component>
...