解決済みの質問
やり方はいろいろあると思いますが、msiつまりWindows Installerオブジェクトを介してインストールされたアプリの情報にアクセスする方法です。
まずアプリからWindows Installerにアクセスします。参照設定で「Microsoft Windows Installer Object Library」への参照を設定します。次に
CreateObject("WindowsInstaller.Installer")
でWindows Installerオブジェクトが作成されます。このオブジェクトから、様々な情報にアクセスしたり操作することができるようになります。
目的のProductCodeがわかっていれば、ProductInfoメソッドで各情報を取得できます。
たとえば以下のように。
---------------------
Public Function GetInfoByProductCode(sProductCode As String, sInfoName As String) As String
Dim objInstaller As WindowsInstaller.Installer
Set objInstaller = CreateObject("WindowsInstaller.Installer")
GetInfoByProductCode = objInstaller.ProductInfo(sProductCode, sInfoName)
End Function
---------------------
これで、
---------------------
?GetInfoByProductCode("{123456789-XXX-XXX-XXX-XXX}", "RegCompany")
株式会社○○○
---------------------
のように使えます。"RegCompany" の部分は、Publisher、PackageName、RegOwner、VersionString、InstallDate…などなどで各情報が返ります。
バージョン共通で使えるようにするには、ProductCodeではなくUpgradeCodeをもとに検索するといいです。メソッドRelatedProducts(UpgradeCode)で、同じUpgradeCodeのアプリが複数返されます。
これを順にVersionStringを比較し、最新バージョンだけを特定したりします。
投稿日時 - 2005-07-22 16:19:41
お礼
ありがとうございます。
さっそく試してみたいと思います。
投稿日時 - 2005-07-22 17:12:02
2人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(2件中 1~2件目)
同じ質問を分割すると違反になるので、
↓こちらは削除したほうがいいと思いますよ。
http://okweb.jp/kotaeru.php3?q_id=1557565
削除方法
http://feedback.okweb.ne.jp/fQA.php?qid=13039
> 登録はインストーラが行なっているのではないのですか。登録の方法はどうするのでしょうか
ユーザーがインストール時に値を入力して、MSIにて「RegisterUser」アクションが実行されれば登録されます。
投稿日時 - 2005-08-04 02:15:03
> RegCompanyとRegOwnerの情報だけ空文字になって返って来ません。
こちらの質問が締め切られていなかったので、こちらに投稿します。
同じ質問を分割すると違反になると思うので、
↓こちらは削除依頼を出してください。
http://okweb.jp/kotaeru.php3?q_id=1557565
で、空文字が返る件ですが、単純に登録されていないだけなのでは?
まずはその点を確認してください。
参考までに、取得できる属性は以下のとおりです。
HelpLink
HelpTelephone
InstallDate
InstallLocation
InstalledProductName
InstallSource
LocalPackage
ProductID
Publisher
PackageName
RegCompany
RegOwner
URLInfoAbout
URLUpdateInfo
VersionMinor
VersionMajor
VersionString
投稿日時 - 2005-08-03 21:37:41
お礼
早急な御回答ありがとうございます。
違反の件はよく理解できていなくて申し訳ありません。
登録はインストーラが行なっているのではないのですか。登録の方法はどうするのでしょうか
投稿日時 - 2005-08-03 22:06:08