2012-03-30 27 views
3

ビルド環境に応じて設定スクリプトを柔軟にするために、次のdefineを使用しています。プラットフォーム属性を使用したWiX x86/x64ビルド

<?if $(var.Platform)=x64 ?> 

<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> 
<?define win64Flag = "yes"?> 
<?define TargetConfigurationPath = "bin\x64\Release"?> 

<?else ?> 

<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> 
<?define win64Flag = "no"?> 
<?define TargetConfigurationPath = "bin\x86\Release"?> 
<?endif ?> 

詳細私はコンポーネントのすべてのWin64属性で使用するwin64Flag変数について気にします。私はパッケージも "プラットフォーム"属性でプラットフォームを使用しています。 しかし、バックのWin64属性に取得し、私は変数をこのように使用する:

Win64="$(var.win64Flag)" 

そして、私はいつもYesNoType属性にこのステートメントを使用すると、無効であることを私に告げる警告が表示されます。

私はこの呼び出しでcandle.exeを使用してこのようなものを構築しています:

candle.exe -ext WixUtilExtension -dPlatform=x86 "Deployment\WiX Setup Project\SetupScript.wxs" -out "Deployment\TempBuildOutput\SetupScript x86.wixobj" 

light.exe -ext WixUIExtension -ext WixUtilExtension "Deployment\TempBuildOutput\SetupScript x86.wixobj" -out "Deployment\TempBuildOutput\Installer_x86.msi" 

私は、インストールが終了した場合は、アプリケーションを起動し、自動れ、私のスクリプトでいくつかのCustomActionを得ました。これはx64ビルドでうまく動作しますが、x86ビルドではうまく動作しません。 私は、Win64属性に何か問題があるかもしれないと思っています。

私の考えによれば、ファイルはx64(Program Files)とx86(Program Files(x86))の適切なフォルダにインストールされているので、このコードで何か正しいはずです。しかし、私は自分自身に頼んでいる、インストールが完了した後に私のアプリが起動しない理由は何ですか?

私はx64 Windowsで作業しています。これがx86自動起動アプリケーションの起動に失敗する原因になりますか?

私のWin64属性の使用に関する警告を解決する方法はありますか?

答えて

2

問題の診断に必要な情報がなくても、インストールが完了してアプリが起動しない理由はわかりませんが、無効な属性についての警告が表示される理由を教えてください。

警告が表示されないコマンドラインでプロジェクトをコンパイルすると、無効な属性の警告がVisual Studioによって生成されます。 Visual StudioのXMLエディタは、XMLドキュメントのスキーマを認識すると、自動的にXMLスキーマの検証を行います。 Wix XMLスキーマは、Win64属性に許容される値をyesまたはnoのいずれかとして定義します。 Visual Studioでは、これらの値のいずれも持っていないことがわかり、定義されたスキーマを遵守していないことを親切に知ることができます。 Wixは最初に文書を前処理し、問題の値をインクルードファイルで定義した値に置き換えて、文書がスキーマの検証に合格するようにします。

要するに、この警告は表示されている問題の原因ではない可能性があります。

関連する問題