【问题标题】:Installer conditionally picking up files安装程序有条件地拾取文件
【发布时间】:2015-08-07 21:04:13
【问题描述】:

我正在构建一个 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 文件吗?

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

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

    因此,您可以采取以下步骤来完成此操作:

    1. 创建一个空解决方案。
    2. 将您的 wixproj 添加到其中。
    3. 将您的 csproj 添加到其中。
    4. 将 csproj 的引用添加到 wixproj。
    5. 修改您的File[Source] 以使用项目引用,这样:

    $(var.MyProject.TargetPath)会自动从正确的路径获取exe。

    1. 创建一个批处理文件以运行 msbuild 两次,每个配置一个,使用以下命令:
    C:\> msbuild mySolution.sln /p:Configuration=Debug C:\> msbuild mySolution.sln /p:Configuration=Release

    结果将是两个安装包,每个配置一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 2022-01-15
      • 2014-11-04
      • 2018-11-19
      相关资源
      最近更新 更多