wix服务安装权限不足

时间:2018-08-09 13:32:10

标签: xml service wix windows-services

我正在尝试使用WiX创建用于窗口服务的安装程序,我尝试了所有找到的答案,但没有尝试。由于权限不足,使用WiX创建的安装程序仍然无法安装,权限不足...这是我的代码...

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'><?define G_TargetDir=$(var.G.TargetDir)?>
    <Product Id="*" Name="G.Installer" Language="1033" Version="1.0.0.0" Manufacturer="" UpgradeCode="PUT-GUID-HERE">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate EmbedCab="yes" />

        <Feature Id="ProductFeature" Title="G.Installer" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="G.Installer" />          
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
            <Component Id="G.exe" Guid="*">
              <File Id="G.exe" Name="G.exe" Source="$(var.G_TargetDir)G.exe" Vital="yes" KeyPath="yes" />
        <ServiceInstall Id="G.exe" Type="ownProcess" Vital="yes" Name="G.exe" DisplayName="G" Description="Description" Start="auto" Account="LocalSystem" ErrorControl="critical" Arguments="-start" Interactive="yes">
          <util:PermissionEx  User="Everyone" ServicePauseContinue="yes" ServiceQueryStatus="yes" ServiceStart="yes" ServiceStop="yes" ServiceUserDefinedControl="yes" />
        </ServiceInstall>
        <ServiceControl Id="G.exe" Stop="both" Start="install" Remove="uninstall" Name="G.exe" Wait="no"/>
            </Component>
            <Component Id="G.exe.config" Guid="*">
              <File Id="G.exe.config" Name="G.exe.config" Source="$(var.G_TargetDir)G.exe.config" />
            </Component>
            <Component Id="MongoDB.Bson.dll" Guid="*">
              <File Id="MongoDB.Bson.dll" Name="MongoDB.Bson.dll" Source="$(var.G_TargetDir)MongoDB.Bson.dll" />
            </Component>
            <Component Id="System.Buffers.dll" Guid="*">
              <File Id="System.Buffers.dll" Name="System.Buffers.dll" Source="$(var.G_TargetDir)System.Buffers.dll" />
            </Component>
            <Component Id="DnsClient.dll" Guid="*">
              <File Id="DnsClient.dll" Name="DnsClient.dll" Source="$(var.G_TargetDir)DnsClient.dll" />
            </Component>
            <Component Id="System.Runtime.InteropServices.RuntimeInformation.dll" Guid="*">
              <File Id="System.Runtime.InteropServices.RuntimeInformation.dll" Name="System.Runtime.InteropServices.RuntimeInformation.dll" Source="$(var.G_TargetDir)System.Runtime.InteropServices.RuntimeInformation.dll" />
            </Component>
            <Component Id="MongoDB.Driver.Core.dll" Guid="*">
              <File Id="MongoDB.Driver.Core.dll" Name="MongoDB.Driver.Core.dll" Source="$(var.G_TargetDir)MongoDB.Driver.Core.dll" />
            </Component>
            <Component Id="MongoDB.Driver.dll" Guid="*">
              <File Id="MongoDB.Driver.dll" Name="MongoDB.Driver.dll" Source="$(var.G_TargetDir)MongoDB.Driver.dll" />
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

1 个答案:

答案 0 :(得分:1)

  

InstallPrivileges :尝试其他操作之前,请先设置   从Package element中的 InstallPrivileges attribute "elevated" ?只是为了确保-我认为默认是提升(一旦InstallScope至少是perMachine吗?)。


正在编译? :目前还不清楚会发生什么。 WiX项目是否无法编译?看起来很奇怪的第一件事是您没有制造商值-也许您在发布之前将其删除了?据我所知,除非Manufacturer具有值,否则WiX 3将拒绝编译。如果缺少,请添加它。

<Product Id="*" Name="G.Installer" Language="1033" Version="1.0.0.0" 
         Manufacturer="YOURCOMPANYNAMEHERE" UpgradeCode="PUT-GUID-HERE">

安装程序行为 :如果安装程序可以编译,运行时是否会开始安装,但无法完成?还是完成并且服务无法启动?您是否使用管理员帐户进行安装并在启动安装时收到UAC提示?


日志记录 :我们需要更多信息,如果安装失败,则应启用MSI日志记录以查看发生了什么。首先,您检查系统的事件日志,然后在启用详细的MSI日志记录的同时运行安装程序。我想为所有MSI安装启用日志记录。性能影响不大,但是当您突然需要一个真正的日志文件时,始终可以使用。 You can enable logging for all MSI files as explained on installsite.org(部分:“ 计算机上所有设置的全局范围 ”)。安装后,MSI日志文件将仅位于您的%TEMP% folder中。它们有一个随机的十六进制名称,您可以定期将它们全部冲洗掉,以免它们堆积。您可以按修改日期/时间进行排序,以查找最新创建的日期/时间。 Some logging and log-file interpretation hints can be found here


  

建议 1 :我将尝试设置在虚拟机上手动运行服务所需的文件并将它们注册到   验证服务是否正常运行。 2 :做一个完整的   重建WiX安装程序,删除所有临时文件和wixobj   文件。您的安装程序可能无法编译,但是   它与先前编译中已存在的wixobj文件链接。 “高度惊讶”因素(与过时的文件链接)。


服务启动问题 :显而易见:如果服务无法启动,请启用其最大日志记录级别,并检查事件日志以及您执行的其他任何日志记录可能有。 Run dependency checkingDependencies.exe-重写Dependency Walker)和check assembly binding。检查您的 config文件(硬编码错误值)中是否存在开发箱错误,等等...不需要告诉您,但这是my usual checklist(有人为之投票)出于某种原因,让我知道您可能在其中发现什么错误?我是一名部署专家,而不是编码员-它更像是一个“想法”列表,而不是真正的清单)。


源代码简化 :通常可以按以下说明简化WiX源文件:Syntax for guids in WIX?示例:

<Component Id="System.Runtime.InteropServices.RuntimeInformation.dll" Guid="{00000000-0000-0000-0000-000000000000}">
   <File Id="System.Runtime.InteropServices.RuntimeInformation.dll" Name="System.Runtime.InteropServices.RuntimeInformation.dll" Source="$(var.G_TargetDir)System.Runtime.InteropServices.RuntimeInformation.dll" />
 </Component>

vs

<Component>
   <File Source="$(var.G_TargetDir)System.Runtime.InteropServices.RuntimeInformation.dll" />
 </Component>