2011-12-19 20 views
3

私は現在、x86インストーラの作成用とx64インストーラの作成用の2つのWIXプロジェクトを持っています。これらの2つのプロジェクトを、プログラムフローを制御するための変数を使用する1つのプロジェクトにまとめたいと思います。ProgramFiles64FolderがWIXインストーラの Program Files(x86)にインストールされています

私は、次のしている:

<?if $(var.Platform) = x64 ?> 
    <?define ProductName = "CableSolve Web (64 bit)" ?> 
    <?define Win64 = "yes" ?> 
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> 
    <?else ?> 
    <?define ProductName = "CableSolve Web" ?> 
    <?define Win64 = "no" ?> 
    <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> 
    <?endif ?> 

と私は、Visual Studioに行ってきました - > [構成マネージャなどのようなものを設定する - ビルド>:

enter image description here

私は、通過したと取り外し両方のプロジェクトのすべてのコンポーネント/ディレクトリに、「Win64 = 'yes'」と「Win64 = 'no'」のすべてのパラメータがあります。

これ以上のことがあれば、私は疑問に思います。 x64インストーラを作成すると、C:\ Program Files(x86)にインストールしようとしていますが、C:\ Program Filesではインストールできません。私はこれがコードが 'else'ステートメントに落ちていることを意味していると仮定していますが、これを確認する方法はわかりません。

x64インストールパスを適切に生成するために設定する必要がある他の変数はありますか?

おかげ

は、私は(私は現在の追加に取り組んでいた変数を除く)以下のインストーラコードのすべてを継承しています。 $(var.PlatformProgramFilesFolder)とEnvironmentVariables wxiを追加しました。 enter image description here

EDIT2:これはおそらく犯人であるが、その形状は、x86である理由を見つけることを試みる:

------スキップは、すべてを再構築:プロジェクト:CSのWebインストーラのx64の、構成:x86のをリリース - -----

+0

64ビット版をインストールする場合、ProductNameは「CableSolve Web(64ビット)」または「CableSolve Web」と表示されますか。また、ディレクトリタグブランチを表示してください。 –

+0

ProductNameはCableSolve Webとして表示されます。私は 'ProductName = "CableSolve Web"のビットを$(var.Platform)に置き換え、別のインストーラをビルドしています - プラットフォームが何であるかを知るために興味があります。メインのポストにアップロードされた別のイメージを、ディレクトリタグのブランチを2番目に表示します。 EDIT:x64インストーラをビルドするとき、var.Platformはx86です。 –

+0

Configuration Managerの画面では、インストーラをビルドする2つの別々のプロジェクトがあります。これら2つのプロジェクトは同一であるか、あるいは偶然に不一致が生じていますか? –

答えて

6

2つのこと:

  1. あなたは、64ビット.msiファイル
  2. である$(var.Platform)variabを取得するために、パッケージ要素にプラットフォームに= "x64の" 属性を設定する必要がありますル初期化? WIX組み込みプラットフォーム変数を使用する場合は、WIXバージョンに応じて$(sys.BUILDARCH)または$(sys.PLATFORM)を使用する必要があります。
関連する問題