我想根据是否定义了值来更改Wix变量的值。在我的wixproj中,我有:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TFS Live|x86' ">
    <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
    <IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
    <WixVariables>LIVE</WixVariables>
    <DefineConstants>LIVE</DefineConstants>
  </PropertyGroup>


...在我的wx中,我有:

<?ifdef LIVE ?>
<?define binaryPath = "C:\Builds\5\IT Aerodynamics\RBT.TestSpec.LiveRelease\Binaries" ?>
<?else?>
<?define binaryPath = "C:\Builds\5\IT Aerodynamics\RBT.TestSpec.CI\Binaries" ?>
<?endif?>


...但是当我构建适当的配置时,ifdef永远不会触发。我总是得到binaryPath的第二个值。关于我在做什么错的任何建议吗?

最佳答案

该代码对我有用。要检查的一件事是,稍后在.wixproj中您没有另一个DefineConstants MSBuild属性,该属性看起来不是:

<DefineConstants>$(DefineConstants);OtherVars=Value</DefineConstants>


默认的.wixproj模板创建定义了Debug预处理程序变量的项目,如下所示:

<DefineConstants>Debug</DefineConstants>


这将覆盖在项目中为调试版本定义的更高版本的DefineConstants。否则,一切看起来都很好。

08-27 17:33