WIX - Недостаточно прав для удаления службы - PullRequest
0 голосов
/ 11 февраля 2019

Я создаю установочный пакет для службы Windows с помощью установщика WIX.Я могу создать установочный пакет, и он устанавливает и запускает службу с проблемой, но я не могу удалить службу.Ошибка в журнале удаления:

MSI (s) (E4:E4) [11:51:15:117]: Error: 1060. Failed to change configuration of service Service Name because handle to the service could be obtained. Check if the service exists on the system.

, за которой следует:

MSI (s) (E4:E4) [11:51:18:900]: Product: Service Name -- Error 1939. Service '' (Service Name) could not be configured.  This could be a problem with the package or your permissions. Verify that you have sufficient privileges to configure system services.

, что является отображаемой ошибкой.

enter image description here

Вот конфигурация компонента в моем Product.wxs.

<Component Id="$(var.TestImportService.TargetFileName)" Guid="7BCCB287-D4A5-42B9-B83B-E67E22D56D90">        
        <File Id="$(var.TestImportService.TargetFileName)" Name="$(var.TestImportService.TargetFileName)" Source="$(var.TestImportService.TargetPath)" KeyPath="yes" />
        <!-- Remove all files from the INSTALLFOLDER on uninstall -->
        <RemoveFile Id="ALLFILES" Name="*.*" On="uninstall" />
        <!-- Tell WiX to install the Service -->
        <ServiceInstall Id="ServiceInstaller"
                        Name="$(var.Name)"
                        Type="ownProcess"
                        DisplayName="$(var.Name)"
                        Description="The description."
                        Interactive="no"
                        Arguments="-start"
                        Vital="yes"
                        Start="auto"
                        ErrorControl="normal">
          <util:PermissionEx User="LocalSystem"
                             GenericAll="yes"
                             ServiceChangeConfig="yes"
                             ServiceEnumerateDependents="yes"
                             ChangePermission="yes"
                             ServiceInterrogate="yes"
                             ServicePauseContinue="yes"
                             ServiceQueryConfig="yes"
                             ServiceQueryStatus="yes"
                             ServiceStart="yes"
                             ServiceStop="yes" />
        </ServiceInstall>
        <!-- Tell WiX to start the Service -->
        <ServiceControl Id="ServiceInstaller" Name="$(var.Name)" Start="install" Stop="both" Remove="both" />
        <ServiceConfig ServiceName="$(var.Name)" DelayedAutoStart="1" PreShutdownDelay="5000" OnInstall="yes" OnReinstall="yes" OnUninstall="yes" />
      </Component>

Учетная запись, с которой я вхожу на машину, находится в группе администраторов машины.Что я не правильно настроил, чтобы деинсталляция работала?

РЕДАКТИРОВАТЬ: По запросу я запустил установщик с подробным ведением журнала.Вот командная строка, которую я нашел в журналах.

From Install Log
MSI (c) (48:44) [13:44:13:945]: Command Line: CURRENTDIRECTORY=C:\Users\user.name\Documents\Visual Studio Projects\TestService\TestServiceSetup\bin\Debug CLIENTUILEVEL=0 CLIENTPROCESSID=14664 

...

MSI (s) (DC:4C) [13:44:45:191]: Command Line: INSTALLFOLDER=C:\Program Files (x86)\Company Name\Test Service\ ROOTDIRECTORY=C:\Program Files (x86)\Company Name\ TARGETDIR=C:\ CURRENTDIRECTORY=C:\Users\user.name\Documents\Visual Studio Projects\TestService\TestServiceSetup\bin\Debug CLIENTUILEVEL=0 CLIENTPROCESSID=14664 USERNAME=Information Technology COMPANYNAME=Company Name SOURCEDIR=C:\Users\user.name\Documents\Visual Studio Projects\TestService\TestServiceSetup\bin\Debug\ ACTION=INSTALL EXECUTEACTION=INSTALL ROOTDRIVE=C:\ INSTALLLEVEL=1 SECONDSEQUENCE=1 ADDLOCAL=MainApplication ACTION=INSTALL 


From Uninstall Log
MSI (s) (9C:F4) [13:55:40:179]: Command Line: REMOVE=ALL CURRENTDIRECTORY=C:\Users\user.name\Documents\Visual Studio Projects\TestService\TestServiceSetup\bin\Debug CLIENTUILEVEL=2 CLIENTPROCESSID=5000 

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Вы можете попытаться указать свою учетную запись Windows.

<u:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[USERNAME]" LogonAsService="yes" RemoveOnUninstall="no"/>
                <ServiceInstall 
                      Id="ServiceInstaller" 
                      Name="$(var.Name)"
                      Type="ownProcess"
                      DisplayName="$(var.Name)"
                      Description="The description."
                      Start="auto"
                      ErrorControl="normal"
                      Account='[USERNAME]'
                      Password='[PASSWORD]'/>
0 голосов
/ 11 февраля 2019

Похоже, что он не может найти службу во время удаления и просмотра вашего WXS:

<ServiceControl Id="ServiceInstaller" Name="$(var.Name)" Start="install" Stop="both" Remove="both" />

Вы просите установщика удалить службу как при установке, так и при удалении.Следовательно, установщик не может найти службу, которую нужно удалить, пожалуйста, измените ее на и попробуйте снова:

<ServiceControl Id="ServiceInstaller" Name="$(var.Name)" Start="install" Stop="both" Remove="uninstall" />

Удалить - Указывает, следует ли удалить службу с помощью действия DeleteServices при установке, удаленииили оба.Для «установки» служба будет удалена только при установке родительского компонента (msiInstallStateLocal или msiInstallStateSource);для «удаления» служба будет удалена только при удалении родительского компонента (msiInstallStateAbsent);для «обоих» служба будет удалена в обоих случаях.

ServiceControl

...