如何使用 wix 3.8 安装程序在 windows 文件夹中创建文件夹

Posted

技术标签:

【中文标题】如何使用 wix 3.8 安装程序在 windows 文件夹中创建文件夹【英文标题】:How to create a folder in the windows folder using wix 3.8 installer 【发布时间】:2014-06-04 14:38:58 【问题描述】:

我需要在常规安装文件夹(即 c:\program files\mycompany\myapp)中安装文件,但我还需要将文件复制到位于 windows 文件夹中的子文件夹中,即 c:\windows\myfolder。

虽然“安装”文件夹没有问题,但我看不到如何在 c:\windows 中创建子文件夹?

有什么想法吗?

谢谢。

蒂埃里

更新:

我可能应该更准确一些并提供更多信息。这是我拥有的 xml:

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
      <Directory Id="INSTALLFOLDER" Name="MyCompany">
        <Directory Id="ClientFolder" Name="Client">
        </Directory>
        <Directory Id="ServerFolder" Name="Server">
        </Directory>
      </Directory>
    </Directory>
  </Directory>
  <Directory Id="WindowsFolder" Name="WindowsFolder">
    <Directory Id="MyFolder" Name="MyFolder"></Directory>
  </Directory>
</Fragment>

当我尝试编译我的 wix 项目时,我收到以下错误:

Error 1 : The Directory with Id 'WindowsFolder' is not a valid root directory.  
There may only be a single root directory per product or module and its Id attribute 
value must be 'TARGETDIR' and its Name attribute value must be 'SourceDir'

PS:我是新手,我正在读一本关于如何使用 Wix 的书,但我需要这个,所以请耐心等待我 :)。谢谢。

【问题讨论】:

您只能有 1 个根文件夹... TARGETDIR。所有其他文件夹都必须是子文件夹。 WF 应该是 PFF 的兄弟。 @ChristopherPainter ...我刚刚回答了我自己的问题,但您的评论正是我所缺少的!谢谢。 【参考方案1】:

您根据System Folder Properties 创建目录元素。特别是WindowsFolder property。然后为您的文件夹创建一个子目录元素。

在执行此操作之前,您应该有非常充分的理由,因为这是一个操作系统领域。我通常会告诉开发人员不,除非他们有非常非常好的理由。

【讨论】:

我也不喜欢它,但这是我们与我们的软件一起使用的第三方工具的要求。【参考方案2】:

一分钱掉了!!

需要在下面直接添加目录引用

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

连同您的其他目录。你最终会得到这样的东西

  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="MyApp">
      <Directory Id="ClientFolder" Name="Client"/>
    </Directory>
  </Directory>
  <Directory Id="WindowsFolder">
    <Directory Id="MyFolder" Name="MyFolder"/>
  </Directory>
</Directory>

WindowsFolder 将告诉安装程序使用“windows”文件夹并使用其中的子文件夹,只需将您的 ComponentGroup(或其他)的目录设置为 MyFolder,即

<ComponentGroup Id="MyFolderComponents" Directory="MyFolder">
  ..
  ..
</ComponentGroup>

【讨论】:

【参考方案3】:

您的常规安装文件夹基于一棵树,该树将在某处具有 ProgramFilesFolder,然后是您的子文件夹名称。使用标准 Windows Installer 属性对 Windows 文件夹执行相同操作:

Windows Folder

这是其中之一:

Property Reference

【讨论】:

我不确定你在说什么。我已经添加了我项目中的 xml。

以上是关于如何使用 wix 3.8 安装程序在 windows 文件夹中创建文件夹的主要内容,如果未能解决你的问题,请参考以下文章

WiX 3.8安装IIS Express和SQL Server LocalDB 2012

修复在 WiX 3.8 中创建的设置时出错

如何在非 Windows 操作系统的 WiX 安装程序中获取操作系统名称?

如何在升级过程中运行捆绑包时,如何在WIX(Windows安装程序xml)引导程序项目中将按钮文本更改为“升级”?

如何使用 wix 安装程序添加公司名称

WiX 3.8 导致 VS 2013 RC 灾难性故障