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

时间:2014-06-04 14:38:58

标签: wix windows-installer wix3.6 wix3.7

我需要在常规安装文件夹中安装文件(即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的书,但我需要这个,所以请耐心等待我:)。谢谢。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

便士掉了!!

您需要直接在

下添加目录引用
<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会告诉安装人员使用&#34; windows&#34;文件夹和使用其中的子文件夹,只需将您的ComponentGroup(或其他)的目录设置为MyFolder,即

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

答案 2 :(得分:0)

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

Windows Folder

这是其中之一:

Property Reference