2

Windows 2010 用のアドインを展開する WiX インストーラーを作成しました。現在、ターゲット システムには x64 Win & Office がインストールされています。x64インストーラーとランタイムよりも必要であると言っているいくつかのマイクロソフトサイトを歩き回りました(アドインが現在の単語の実行プロセスにロードされるため)。このインストーラーは、次のステートメントを使用して VSTO ランタイムの存在を確認します。

<?if $(var.Platform)=x64 ?>
<?define win64Flag = "yes"?>
<?else ?>
<?define win64Flag = "no"?>
<?endif ?>

<Property Id="VSTORUNTIMEREDIST">
    <RegistrySearch Id="VSTORuntimeRedist" Root="HKLM" Key="SOFTWARE\Microsoft\vsto runtime setup\v4R\VSTORFeature_CLR40" Name="Version" Type="raw" Win64="$(var.win64Flag)"/>
</Property>

<Property Id="OFFICERUNTIME">
    <RegistrySearch Id="OfficeRuntime" Root="HKLM" Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4" Name="Version" Type="raw" Win64="$(var.win64Flag)"/>
</Property>
<Condition Message="The Visual Studio 2010 Tools for Office Runtime is not installed. Please install the Office Runtime.">
    <![CDATA[Installed OR VSTORUNTIMEREDIST>="10.0.30319" OR OFFICERUNTIME>="10.0.21022"]]>
</Condition>

実際には、インストーラーの x86 バージョンで動作していますが、x64 モードでビルドすると、いつでも (ランタイムがインストールされていても) レジストリで x64 エントリを見つけることができません。既にランタイムをアンインストールして再インストールしようとしましたが (実際に再起動して)、うまくいきません。

アドインをインストールするためのチェックも外しましたが、実際にはロードされません。

したがって、私の質問は、既知のバグの問題があるかどうか、または間違ったレジストリ キーを使用したかどうかです。

4

1 に答える 1

5

x64 システムでは、WoW64 アプリはWow6432Nodeレジストリのノードに透過的にリダイレクトされるため、実際にはそこにあるようなキーを探しますHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSTO Runtime Setup。しかし、実際の x64 アプリは実際のHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSTO Runtime Setupノードを調べます。当然、キーはそこにはありません。これにより、ほとんどの場合、インストーラーが失敗します。そのため、x64 インストーラーの場合、Wow6432Nodeパス部分で完全なノードを指定する必要があります。

これはレジストリ リフレクションと呼ばれ、詳細はこちらで説明されています

于 2012-05-24T09:24:42.823 に答える