【问题标题】:WIX setup with user input带有用户输入的 WIX 设置
【发布时间】:2019-11-05 14:46:40
【问题描述】:

我已经在 WIX 上苦苦挣扎了一段时间。我希望我的程序安装在用户定义的位置,安装服务并在安装后启动程序。

首先我的 msi 包不要求安装路径。

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="Test" />
  </Directory>
</Directory>
</Fragment>

有人可以告诉我如何通过更改安装路径提示屏幕吗?

第二次安装我的服务时出现错误,提示我错过了一些权限:

<File Id="FILE_Service" Source="$(var.Service.TargetPath)" />
    <ServiceInstall Id="INSTALL_Service"
                    Name="Servcie"
                    Description=""
                    Start="auto"
                    ErrorControl="normal"
                    Type="ownProcess"/>

    <ServiceControl Id="CONTROL_Service"
                          Name="Servcie"
                          Start="install"
                          Stop="both"
                          Remove="uninstall"
                          Wait="yes" />

有人可以告诉我如何使用管理员权限启动我的服务吗?

第三个安装包只包含一个EXE文件,没有引用程序集。有人可以告诉我如何告诉 WIX 搜索参考并安装它们吗?

【问题讨论】:

    标签: installation wix windows-services wix3.5


    【解决方案1】:

    WiX 教程:这里有很多。你应该试试 WiX 教程:https://www.firegiant.com/wix/tutorial/

    链接:这是我的WiX quick start tip answer - 处理 WiX 和一般部署的各种资源和提示。

    请注意there are alternative deployment and package creation tools 如果您对 MSI 和设置缺乏经验,它可能会帮助您更快、更可靠地进行设置。


    具体答案:以下是针对您的具体问题的一些尝试答案:

    • Configurable installation directory(页面下方)。您实质上为功能元素设置了 ConfigurableDirectory 属性,以允许用户选择自定义安装目录(进入对话框,您可以通过选择 "Custom" installation 更改安装路径):

      <Feature Id="FeatureDirectory" Title="FeatureDirectory" ConfigurableDirectory="MYCUSTOMDIR">
           <!-- your stuff here -->
      </Feature>
      
    • 重大升级安装目录:您需要回读自定义目录以进行重大升级。方法如下:The WiX toolset's "Remember Property" pattern。或者它将在主要升级期间恢复为默认值。这是因为重大升级是卸载旧版本并(重新)安装新版本。

    • 文件:要安装所有必需的文件,您需要通过依赖扫描找出需要部署哪些文件才能让您的应用程序工作,然后添加手动将它们添加到您的包中(或使用 heat.exe 自动生成要包含的文件列表)。请参阅上述快速入门链接以获取帮助,或查看这篇 hello wix 风格的文章:https://www.codeproject.com/Tips/105638/A-quick-introduction-Create-an-MSI-installer-with

    • 服务权限:如果您在 UAC 提升提示后安装设置,则应使用管理员权限安装服务。很可能它没有启动,因为缺少文件并因此破坏了依赖关系。服务使用什么凭据来运行?本地系统?


    样机:这是一个符合您需要的快速模型。您需要添加所有文件和依赖项,并插入 Service 构造等:

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
      <Product Id="*" Name="WiXSample" Language="1033" Version="1.0.0.0"
               Manufacturer="Someone" UpgradeCode="cb24bedf-e361-4f25-9a06-ac84ce5d6f5c">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    
        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate EmbedCab="yes" />
    
        <!--Default GUI - add reference to WixUIExtension.dll -->
        <UIRef Id="WixUI_Mondo" />
    
        <Feature Id="Core" Title="Core" Level="1" ConfigurableDirectory="INSTALLFOLDER" />
    
        <Directory Id="TARGETDIR" Name="SourceDir">
          <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="WiXSample">
              <Component Feature="Core">
                <File Source="D:\MyBinary.exe" />
              </Component>
            </Directory>
          </Directory>
        </Directory>
      </Product>
    
    </Wix>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 2016-01-03
      • 1970-01-01
      • 2017-10-05
      • 2015-05-19
      • 2017-07-30
      • 2023-04-03
      相关资源
      最近更新 更多