7

ソフトウェアのバージョンを示すプロパティを作成する必要があります。次に、それを WIX プロジェクト内で使用します。つまり、wxs ファイルで参照します。MSBuild がこのバージョン番号にも基づいて出力ファイルの名前を変更するようにするため、wxs ファイルで定義したくありません。PropertyGroup での定数の定義は適切な場所ではありません。その理由は次のとおりです。

PropertyGroup で定義されるプロパティは、構成/プラットフォーム固有です。プロジェクト プロパティ ウィンドウから Visual Studio IDE でこのプリプロセッサを変更するときは、通常、特定の構成/プラットフォームの組み合わせの値のみを変更します。(IDE ですべての構成/プラットフォーム用に変更できることは知っていますが、実際にはすべての組み合わせにコピーを作成することによって行われます。また、1 つの組み合わせのみの値を変更することで同期を台無しにする可能性もあります。たとえば、デフォルトでは、プロジェクト プロパティ ウィンドウのビルド タブを開くと、アクティブな構成/プラットフォームが表示されます)。一方、PropertyGroup は条件なしで定義できますが、IDE で変更するときは常に、すべてではなく、特定の組み合わせに対してのみ変更します。私たちは純粋に VS IDE で SW を構築しているので、

MSBuild の CreateProperty タスクを BeforeBuild ターゲット内で使用しようとしましたが、次の実行では値がまったく有効にならないようです。たとえば、BeforeBuild で既存のプロパティを上書きし、それを WIX で参照すると、古い値が引き続き使用されます。そして、まったく新しいプロパティを作成すると、WIX は未定義のプリプロセッサを訴えます。

それを行う適切な方法はありますか: MSBuild プロパティを作成し、それを WIX 内で使用しますか?

4

2 に答える 2

11

BeforeBuild を使用する必要はありません。これは間違いなくwixprojで動作します。

my.properties

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
  <PropertyGroup>
    <DefineConstants>$(DefineConstants);foo=bar</DefineConstants>
  </PropertyGroup>
</Project>

更新されたwixproj

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- all other stuff -->
<Import Project="my.properties" />
</Project>

ウィックス

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="SetupProject1$(var.foo)" Language="1033" Version="1.0.0.0" Manufacturer="$(var.foo)" UpgradeCode="863d8da1-422b-4b28-aa68-56e3190770d7">
于 2012-11-06T12:44:59.333 に答える
0

ここでプリプロセッサ変数を確認してください。標準以外のプロジェクト プロパティを参照できるかどうかは実際にはわかりませんが、可能のようです。

于 2012-11-06T12:27:28.307 に答える