Wix安装程序 - 未复制所有源和内容

时间:2015-02-26 12:07:15

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

我有一个非常简单的Wix项目,我已经添加了对我的c#项目的引用。在wix项目参考中,我设置了项目输出组 = 全部收获 = True

在我的Products.wxs中,我有以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="test" UpgradeCode="44a12fea-ec26-4237-84e1-6aefb4483c73">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

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

    <Feature Id="ProductFeature" Title="SetupProject1" Level="1">
        <ComponentGroupRef Id="ProductComponents" />
    </Feature>
</Product>

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

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
         <Component Id="ProductComponent">
  <File Source="$(var.MyProject.TargetPath)" />
        </Component> 
    </ComponentGroup>
</Fragment>
</Wix>

问题是我安装msi安装程序时只有一个 dll安装到机器上,但是我希望看到所有项目内容(例如文件夹, C#classes和dlls)在安装文件夹中不仅有单个dll文件。

1 个答案:

答案 0 :(得分:2)

由于WIX 3.6 HarvestProject目标(Votive中的项目输出组和收获标志对此负责)在默认情况下处于禁用状态,因为它已部分损坏。因此,您可以尝试通过将以下内容添加到WIX项目文件来启用它:

<PropertyGroup>
<EnableProjectHarvesting>True</EnableProjectHarvesting>
</PropertyGroup>

或者(我个人更喜欢这种方式)你可以使用HarvestDirectory目标 - 它将在给定目录中递归收集所有文件和文件夹并包含在安装程序中。您甚至可以通过XSD转换过滤收集的文件/文件夹。有关如何操作的示例和详细说明 - 请参阅我对this问题

的回答