0

Visual Studio 2010 のセットアップおよび展開プロジェクトを使用すると、ほとんど「不便」に直面します。App1 と App2 の 2 つのアプリケーションがあるとします。両方のアプリケーションには個別の MSi インストール パッケージがあり、異なる場所にインストールできます。App1 は、App2 がインストールされている場所を知る必要があります。以前は、App1 に App2 のインストール パッケージの「ProductCode」値を提供していました。このようにして、App1 は App2 のインストール パスを見つけ、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall の「ProductCode」キーで適切な値を探します。

App2 インストール パッケージのバージョンが更新され、Visual Studio から ProductCode を変更するように促されました。変更され、App1 は以前の ProductCode を使用して App2 のインストール パスを見つけることができなくなりました。もちろん、App1 に新しい ProductCode を与えることもできますが、App2 のバージョンが更新されるたびにこれを行う必要があります。また、古いバージョンの App1 は、新しい ProductCode が認識されないため、新しいバージョンの App2 を見つけることができません。

したがって、App2 のインストール パスを見つけるには、より「永続的な」方法が必要です。何らかの理由で開発者が自分で変更しない限り変更されない、Visual Studio セットアップおよびデプロイ プロジェクトの UpgradeCode 値について考えます。しかし、レジストリに UpgradeCode の痕跡は見つかりませんでした。

UpgradeCodes が保存されている場所を知っている人はいますか? それとも、UpgradeCode が存在することがわかっている場合に、実際の ProductCode を見つける方法でしょうか? 誰かがアプリケーションのインストール パスを見つけるためのより良い方法を持っているのではないでしょうか? 前もって感謝します。

4

1 に答える 1

1

MsiEnumRelatedProducts関数を使用して、アップグレード コードに一致する製品を列挙します。

于 2013-03-28T22:13:32.687 に答える