私はWix v3.0を使用しています(これはMSIインストーラです)、Excel 2003がインストールされていることを確認するための条件を作成しようとしています。マシン上のExcel 2003の存在を検出するには、最も堅牢な方法は何ですか?Excel 2003がインストールされているかどうかを検出する最善の方法は何ですか?
私はさまざまな提案を見ましたが、決定的なまたは正式な答えはありませんでした。
私はWix v3.0を使用しています(これはMSIインストーラです)、Excel 2003がインストールされていることを確認するための条件を作成しようとしています。マシン上のExcel 2003の存在を検出するには、最も堅牢な方法は何ですか?Excel 2003がインストールされているかどうかを検出する最善の方法は何ですか?
私はさまざまな提案を見ましたが、決定的なまたは正式な答えはありませんでした。
Office 2003ツールキットには、OfficeのコンポーネントのすべてのGUIDを含むOffice 2003 Keypath and Default Installation Settings workbooksというファイルがあります。これに基づいて、コンポーネント検索を使用してCore Excelコンポーネントを特定しました。 WiXのでは私の条件は、次のようになります。
<Property Id="EXCEL2003INSTALLED">
<!-- This is the Component Id of Global_Excel_Core -->
<ComponentSearch Id="DetectExcel2003" Guid="{A2B280D4-20FB-4720-99F7-40C09FBCE10A}" Type="file"/>
</Property>
<Condition Message="This application requires Excel 2003 to be installed."><![CDATA[Installed OR EXCEL2003INSTALLED]]></Condition>
This pageは、他のOfficeアプリと他のバージョンのコンポーネントGUIDを持っています。
レジストリ、またはおそらくExcelの標準インストールパスを確認してみてください。
我々は、INSTALLROOTのレジストリキーをチェック:
HKLM\Software\Microsoft\Office\12.0\Excel\InstallRoot
を(あなたのアプリケーションに関連するバージョン番号の12.0を交換してください)。
64ビットオペレーティングシステムでは、これはレジストリの32ビットセクションに反映されます(レジストリリフレクションの詳細については、this Microsoft articleを参照してください)。
これは、少なくともバージョン2000、XP、2003、2007および2010ではうまくいくようです。 2010年の唯一の変更点は、64ビット版ではレジストリの64ビットセクションを調べる必要があることです。
Excel(Office)もWindowsインストーラーによってインストールされます。 なぜExcelコンポーネントコードがチェックされていませんか?
私はこれを考慮しましたが、Office MSIファイルを手元に持っていないとExcelコンポーネントコードがありませんでした。あなたはそれらを持っていますか? –
申し訳ありません私はオフィスがありません - 私たちはOOを使用しています。しかし、インストーラAPIを使用してそれらを照会できます。とにかくExcelコンポーネントの使用回数を増やすにはapiを使用する必要があります。あなたがこれをやっていないなら、Excel(機能/コンポーネント)は削除され、あなたのアプリはもう動かない。 –