【问题标题】:Install a folder to ALLUSERS (not a shortcut!) using WiX使用 WiX 将文件夹安装到 ALLUSERS(不是快捷方式!)
【发布时间】:2013-06-28 18:28:26
【问题描述】:

我有一个MSI 文件,它正在安装一个文件夹,里面有一堆文件。我有一个存放文件的位置:

Windows XP: C:\Documents and Settings\All Users\Documents\MyFolder

Windows 7: C:\Users\Public\Documents\MyFolder

问题是我不想硬编码这些路径,但无论我在哪里看,我都无法找到如何做到这一点,因为无论我看哪里,他们都在谈论为所有用户创建快捷方式,那就是 不是我想要做的。如何将文件夹安装到“所有用户”位置?

类似这样的:

<PropertyRef Id="WIX_DIR_COMMON_DOCUMENTS" />

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="WIX_DIR_COMMON_DOCUMENTS">
    <Directory Id="MyFolder" Name="MyFolder">

【问题讨论】:

    标签: wix wix3.7


    【解决方案1】:

    Windows Installer 没有该文件夹的 property,但 WiX 提供的自定义操作有。

    根据OSInfo custom actions 上的文档:

    1. 为链接器引用 WixUtilExtension 扩展。
    2. 通过引用定义属性:

      <PropertyRef Id="WIX_DIR_COMMON_DOCUMENTS" />
      

    然后,在TARGETDIR 目录下的某处定义目录。例如:

        <Directory Id="TARGETDIR" Name="SourceDir">
          <Directory Id="WIX_DIR_COMMON_DOCUMENTS">`
            <Directory Id="MyFolder" Name="MyFolder" />`
          </Directory>`
        </Directory>`
    

    【讨论】:

    • 我更改了我的问题以反映我所做的更改,但现在我收到 2600 个错误(毫不夸张)。它说“由于此文件夹未植根于标准目录,因此此组件不符合标准”
    • 是的,您(或 heat.exe)必须为您的组件生成 GUID。 WiX 可以通过消除 GUID 为我们提供很好的服务,但它并不总是这样做。如果您始终只执行 MajorUpgrades(推荐),则 GUID 无关紧要。否则,各个版本的组件 GUID 必须相同。
    • 所以我使用了下面的 heat 命令,这不是自动生成 GUIDS 吗? “C:\Program Files\WiX Toolset v3.7\bin\heat.exe”目录“..\..\MyFolder\Stuff”-dr INSTALLFOLDER -gg -var var.MyFolderBin -srd -ag -sfrag -t。 .\..\template.xslt -out ..\..\MyFolderBin.wxs
    • 所以删除 -ag 解决了这个问题,我忽略了我在运行热时使用了这个标签....再次感谢您帮助我获得 WiX 体验!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    相关资源
    最近更新 更多