WiX - Install Windows Service and give permissions

.net, windows-installer, windows-services, wix

Solution

Documentation says use this inside the ServiceInstall element:

<util:PermissionEx
    User="Everyone"
    GenericAll="yes"
    ServiceChangeConfig="yes"
    ServiceEnumerateDependents="yes"
    ChangePermission="yes"
    ServiceInterrogate="yes"
    ServicePauseContinue="yes"
    ServiceQueryConfig="yes"
    ServiceQueryStatus="yes"
    ServiceStart="yes"
    ServiceStop="yes" />

I haven't tried it

util namespace is `xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"`

Problem

We are required to give a user permissions to Start, Stop, and Query status of an installed service. In WiX 2.0, this xml would have worked: ``` <ServiceInstall Id="ServiceInstaller" Type="ownProcess" Name="$(var.ServiceName)" DisplayName="$(var.ServiceName)" Description="Our service description" Start="demand" Account="LocalSystem" ErrorControl="ignore" Interactive="no"> <Permission User="Everyone" ServiceQueryStatus="yes" ServiceStart="yes" ServiceStop="yes" /> </ServiceInstall> <ServiceControl Id="StopService" Stop="both" Remove="uninstall" Name="$(var.OmniVpnServiceName)" Wait="yes" /> ``` We're using WiX 3.0, and they removed the Service* attributes from the Permission element, and no longer allow it to be a child of a ServiceInstall element. How do we get the same effect in WiX 3.0? As an overview, we need: Install a Service with: - Manual startup - Runs under Local System as "ownProcess" - Non-interactive with desktop - Stops on uninstall Give the "Everyone" user access to: - Start - Stop - Query Status On the installed service.

Original source