Wix 安装程序有条件地拾取文件

Wix 安装程序有条件地拾取文件,wix,windows-installer,Wix,Windows Installer,我正在构建一个Wix安装程序,我需要两个独立版本的安装程序。一个获取项目的最新开发版本,另一个获取最新发布版本。当前我的片段如下所示: <Property Id="Program.ReleaseBuild" Value="0" /> <?define ReleaseBuild = [Program.ReleaseBuild]?> <Fragment> <ComponentGroup Id="ProductComponents" Director

我正在构建一个Wix安装程序,我需要两个独立版本的安装程序。一个获取项目的最新开发版本,另一个获取最新发布版本。当前我的片段如下所示:

<Property Id="Program.ReleaseBuild" Value="0" />
<?define ReleaseBuild = [Program.ReleaseBuild]?>

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="InstallFolder">
        <Component Id="TheExe" Guid="GUID_GOES_HERE">
            <?if $(var.ReleaseBuild) = 1?>
            <File Id="ProjectExe" Source="(Rel Project Path)/program.exe" />
            <?else?>
            <File Id="ProjectExe" Source="(Dev Project Path)/program.exe" />
            <?endif?>
        </Component>
    </ComponentGroup>
</Fragment>


我在msi上有一个转换,在构建之后转换文件。但问题是,文件是在编译时而不是安装时提取的,因此两个版本的安装程序最终都包含相同的文件。你知道我如何在同一个wix项目中有条件地获取一个dev文件或rel文件吗?

如果你想基于构建质量(调试与发布)创建安装包,你可以使用两种产品配置并根据它选择源。这样,您可以运行msbuild两次,每个配置一次。我不明白你提到的转变的目的

因此,您可以采取以下步骤来实现这一点:

  • 创建一个空的解决方案
  • 将您的wixproj添加到其中
  • 将您的csproj添加到其中
  • 将csproj的引用添加到wixproj
  • 修改
    文件[Source]
    以使用项目引用,方法如下:
  • 结果将是两个安装包,每个配置一个

    <File Source="$(var.MyProject.TargetPath)" Id="ProjectExe" /> C:\> msbuild mySolution.sln /p:Configuration=Debug C:\> msbuild mySolution.sln /p:Configuration=Release