2011-08-11 8 views
7

起動条件はどうなっていますか? x86インストーラが64ビットシステムで動作しないようになっていますが、効果がないようです。64ビットシステムで64ビットインストーラを使用するための起動条件

<!-- Launch Condition to check that x64 installer is used on x64 systems --> 
<Condition Message="64-bit operating system was detected, please use the 64-bit installer."> 
    <![CDATA[VersionNT64 AND ($(var.Win64) = "no")]]> 
</Condition> 

var.Win64は、このようなMSBuildの変数から導出されます。

<!-- Define platform-specific names and locations --> 
    <?if $(var.Platform) = x64 ?> 
    <?define ProductName = "$(var.InstallName) (x64)" ?> 
    <?define Win64 = "yes" ?> 
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> 
    <?define PlatformCommonFilesFolder = "CommonFiles64Folder" ?> 
    <?else ?> 
    <?define ProductName = "$(var.InstallName) (x86)" ?> 
    <?define Win64 = "no" ?> 
    <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> 
    <?define PlatformCommonFilesFolder = "CommonFilesFolder" ?> 
    <?endif ?> 

私は私の問題を解決したいと思いますが、私はまた、この種の問題のトラブルシューティングのための戦略について聞いて興味があると思います。 LaunchCondition table定義によると

答えて

7

:インストールを開始するためにTrueに評価されなければなりません

式。

条件は2つの部分から構成されます.1つはインストール時に評価され、もう1つはビルド時に評価されます。したがって、x86パッケージの場合、条件の2番目の部分は、ビルド時に "no" = "no"と評価されます。これは、インストール時に明らかにTrueを示します。そして、最初の部分 - VersionNT64 - は、x64マシンで定義されている(したがってTrue)。そのため、条件全体がTrueでインストールが開始されます。

<Condition Message="64-bit operating system was detected, please use the 64-bit installer."> 
    <?if $(var.Win64) = "yes" ?> 
    VersionNT64 
    <?else?> 
    NOT VersionNT64 
    <?endif?> 
</Condition> 

が故に、64ビットパッケージに条件がちょうどVersionNT64なり、合格してインストールを開始します:

次のようにあなたの状態を書き換えることができます。フォームx86パッケージでは、条件はNOT VersionNT64になりますが、明らかに64ビットでは失敗しますが、32ビットで開始します。

+1

64ビットパッケージでは、32ビットシステムでアボートする前にLaunchConditionsを取得できないことに注意してください。だから、その事件のメッセージをもっと良くする必要はありません。 –

+0

右ヒントありがとう、マイケル!私は私の答えを更新します... –

+0

@ヤン、返信ありがとうございます。私はあなたが正しくあなたを理解していることを絶対に確信させてください、あなたが言っていることは、私が自分の状態で単純な論理エラーを作りましたと思います。今私はそれを見て、私は私の間違いを見ると思う。あなたの書き直し版だけでなく、「いいえ」から「はい」に変更するだけで問題が解決されると思うのは正しいでしょうか?だから、私は残す: 'VersionNT64 AND($(var.Win64)="はい ")' –

関連する問題