VSTO 2005 SEがインストールされているかどうかは、製品コード{388E4B09-3E71-4649-8921-F44A3A2954A7}を指定してMsiGetProductInfo()を呼び出すだけで簡単に確認できました。 MSDNにリストされています 。
VSTO 2010/4.0ランタイムの製品コードは何ですか?または、すでにインストールされているかどうかを判断するためのより良い方法はありますか?これはインストールプロセス用です。
また、 Windows Imaging Component についても同じことを理解しようとしています。
最も簡単な方法は、レジストリを確認することです。
HKLM\Microsoft\vstoランタイムセットアップ\ v4\Install
HKLM\Microsoft\vstoランタイムセットアップ\ v4R\VSTORFeature_CLR40(これは4.0 Office拡張機能用です)
残念ながら、これまでのところ、ここでの回答はすべての基盤を完全に網羅しているわけではありません。
製品コード
これは信頼できるようには見えません。特定のバージョンではなく、最小バージョンを探しています。製品コードは理論的にはメジャーバージョンの増分に対してのみ変更されることになっていますが、私のマシンのVSTOのバージョン(10.0.40303)の製品コードは{A0FE0292-D3BE-3447-80F2です。 -72E032A54875}。これは、Microsoftが必ずしもそれらを安定させているわけではないことを示唆しているので、これは良い選択肢ではないことをお勧めします。
ファイルバージョン
別のオプションは、VSTOアセンブリ自体の存在/バージョンを確認することです。これは通常、%PROGRAM FILES%\ Common Files\Microsoft Shared\VSTO\10.0にあります。ただし、このディレクトリは保証されていないと思います。実際のディレクトリはレジストリで指定されているように見えますが、明らかにこのソリューションは、レジストリからバージョンを直接取得するよりも優れているわけではありません...
レジストリ
したがって、レジストリを使用することが、おそらく残っている唯一のオプションです。
残念ながら、VSTOランタイムバージョンは、次の4つのレジストリの場所のいずれかに表示される可能性があります。
注:これについての明確な情報源はありません-たとえば、 Wouter van Vugtによるこのブログ投稿 および this SO回答 。それ以上のものがあるかもしれません。
さらに、最小バージョン要件があるかもしれませんが、実際には、これはOffice2010のプレリリースバージョンを実行しているユーザーにのみ影響するのではないかと思います。
Visual Studio 2010 Tools forOfficeランタイムもMicrosoftOffice 2010に同梱されています。ただし、Office 2010 RTMの時点では、Officeを使用したランタイムは.NET Framework3.5を対象とするOfficeソリューションのみをサポートしています。ソリューションが.NETFramework 3.5を対象としている場合、Office 2010がインストールされているか、Visual Studio 2010 Tools for OfficeRuntime再配布可能ファイルがインストールされている場合に実行できます。 Officeソリューションが.NETFramework 4を対象としている場合は、Officeランタイム用にVisual Studio 2010ツールを再配布する必要があります( 引用 )。
最も安全でクリーンな方法は、まだ製品コードをチェックすることです。ここにそれらがあります:
VSTO 2010 x86バージョン10.0.31124の場合:{41A01180-D9FD-3428-9FD6-749F4C637CBF}
VSTO 2010 x64、バージョン10.0.31124の場合:{C3600AE6-93A0-3DB7-B7AA-45BD58F133B5}
次のパッケージの内容を7-Zipで抽出し、OrcaでMSIを分析することでそれらを取得しました。
http://download.Microsoft.com/download/F/3/9/F395E3C2-28A0-4F0D-9E20-FF4D1ADB08D8/vstor40_x86.exe
http://download.Microsoft.com/download/F/3/9/F395E3C2-28A0-4F0D-9E20-FF4D1ADB08D8/vstor40_x64.exe
これらのキーは、インストール先のOSによって異なります。スタンドアロンのvstoとoffice2010および2013.exeをx86およびx64に丹念にインストールしました。レジストリを使用してvstoがインストールされているかどうかを確認するには、次のキーの存在を確認する必要があります。
x64の場合:
HKLM\SOFTWARE\Wow6432Node\Microsoft\VSTO Runtime Setup\v4-> Install
HKLM\SOFTWARE\Wow6432Node\Microsoft\VSTOランタイムセットアップ\ v4-> ProductCode
x86の場合:
- HKLM\SOFTWARE\Microsoft\VSTOランタイムセットアップ-> InstallerPath
編集:私が実際にやったことは、v4
フォルダが存在します。
SCCM 2012でVstorをアプリケーションとして展開するときに、これを検出する方法が必要でした。次のPowerShellスクリプトを使用して、WMIから情報を取得しました。
バージョンが10.0.50908の場合、出力が生成されます。 SCCMは、検出スクリプトが値を返した場合、検出が成功したと見なします。
$VstorVersion = Get-WmiObject -Query "select ProductVersion from SMS_InstalledSoftware where ARPDisplayName = 'Microsoft Visual Studio 2010 Tools for Office Runtime (x64)'" -NameSpace "root\cimv2\sms"
if ($VstorVersion.ProductVersion -ge '10.0.50908') {Write-Host "Found"}