3

x86 アプリケーション用の WiX インストーラーがあります。ただし、単一のコンポーネントのレジストリの x64 領域に書き込む必要があります。これを行うには、次のようなものがあります

<Component Id=foo"..." Win64="yes">
  <Condition>VersionNT64</Condition>
  <RegistryValue
    Root="HKLM" Key="SOFTWARE\Microsoft\...."
    ....
</Component>

.....

<Feature Id='MyFeature' Level='0'> 
    <ComponentRef Id='foo' /> 
<Condition Level='1'>VersionNT64</Condition> 
</Feature>

x64 システムでインストーラーを実行しようとすると、これは正常に機能します。x86 システムで実行すると (条件によりこのコンポーネントがインストールされるとは思わないにもかかわらず)、次のエラーが発生します。

SchedSecureObjectsRollback_x64 3: SchedSecureObjectsRollback 4: C:\Windows\Installer\MSIA98C.tmp 
MSI (c) (84:80) [20:31:05:701]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor. ............

Win64 属性を取り出すと、すべて正常に動作します。ただし、x64 システムには Win64 属性が必要です。

どんなアイデアでも大歓迎です、ありがとう!

4

2 に答える 2

4

Windows インストーラーは、64 ビットの場所に書き込む x86 パッケージの作成をサポートしていません。64 ビット パッケージを作成する必要があります。誰もが腹を立てるのは、古くからの制限です。

代わりに、64 ビット用の 64 ビット MSI パッケージを作成する必要があり、それを 32 ビット MSI パッケージに入れることができBundleます。MsiPackageエレメントには、64 ビット パッケージをいつインストールするかを決定する を含めることができますInstallCondition

于 2013-03-05T22:02:51.587 に答える