2012-04-12 12 views
0

次のレジストリパスにGUIDのではなく、キー固定の名前を製品を持つ方法があるのInstallShieldを使用してインストール静的な名前

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{Random GUID} 

と代替現在のユーザーのための経路をインストールし、32ビットOS

Bassicallyのために私は

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\My App 
+0

また、別のアプリケーションが自分自身を「マイアプリ」と呼んで同じことをしたらどうなりますか? GUIDを使用するポイントは、2人の独立したソフトウェア開発者が同じ値を誤って生成しないということです(既存のソフトウェアと同じキーの下にインストールしようとする*悪意のあるソフトウェアを扱うアプローチもありません)。*ランダム*値ではありません - あなたのインストーラのどこかで使用する必要がある場合は、インストーラテクノロジのどこかに、プロパティなどのように表示する必要があります(InstallShieldの詳細については不明ですが、長い間使用していません)。 –

+0

私のマシン上のアンインストールパスを見ると、GUIDSのヒープ、そしてapp/company名のヒープがあります。 Adobe Air、Microsoft Visual Studio 2010を含みます。もしそれが固定ガイドであったなら、私はそれに満足しています。しかし、すべてのアップグレード後の瞬間にそれが変わります。 –

答えて

1

WindowsインストーラのPublishProduct標準のような何かをしたいですactionはProductCodeプロパティを使用してこのレジストリキーを作成します。 GUIDが変更されている場合は、主要なアップグレードを実行しているため、各ビルドでProductCodeを変更しているためです。

私はこの動作を抑制する方法を考えることができますが(ARPSYSCOMPONENT property)、正直言ってそれは価値がなく、インストーラの脆弱性を高めるだけです。 FWIWは、他の大手企業がインストーラ(特にマルチプラットフォームの企業)で何かをするのを見ても、それがエミュレートするのは良いことではありません。

なぜあなたはobsecureレジストリキーに名前が付けられているか気にする必要があります。おそらくあなたはいくつかの自動化をしようとしています。この場合、WindowsインストーラにWin32およびCOMオートメーションインターフェイスがあり、インストールされた製品に関する情報をMSIに問い合わせることができます。 WMIプロバイダもありますが、品質は非常に低いです。

+0

彼らの偉大な洞察力。はい、私はファイルが自動的に別のシステムを介して更新された後、これらの値を定期的に更新する方法を見つけることを試みています。私はしない場合、Windowsインストーラは、アプリケーションが起動されたときに修復を実行します。あなたが話していたCOMインターフェイスを使用しているはずです。あなたはこれについてより多くの情報を提供できますか? –

+0

ここから開始し、インストーラーオブジェクトに注意してください。ところで、.NETでこれをやっているのであれば、COMよりも優れたinteropライブラリがあります。 Google DTF http://msdn.microsoft.com/en-us/library/windows/desktop/aa367809(v=vs.85).aspx –

+0

はい。それは.netにあります –

関連する問題