2011-02-07 7 views
3

私たちは、プロジェクトの存続期間中に同じアップグレードコードを持っていたinstallshield製品を持っています。どういうわけか、リリースが新しいアップグレードコードでリリースされたので、今度は顧客の追加/削除プログラムに複数のエントリが表示され始めています。Installshield - 「悪い」アップグレードコードを含む製品を削除する必要があります

別のアップグレードコードを調べて現在のものと一致しない場合は削除する方法(インストールスクリプト、おそらく?)がありますか?(古いものに戻しますもう一度変更しないでください!)

お時間をいただきありがとうございます。

+0

ありがとうございましたChristopher ...次の数日でこれに取り組んでいきます。私は本当にあなたが時間を取っていただきありがとうございます! – Jamie

答えて

5

インストーラは、任意の数のUpgradeCodeファミリに属する​​製品を削除できます。旧UpgradeCodeと新しいUpgradeCodeの両方をカバーする別のMajorUpgradeルール(Upgradeテーブル)を作成してください。

1

アプリケーションのインストール情報がシステムレジストリに格納されている場所を確認してください。製品コードの格納場所を知ることができれば、レジストリからコードを読み取り、プログラムの削除スクリプトを実行するためのスクリプトを書くことができます。

1

私はちょうどこれを通過し、それは痛みでした。私たちはVS 2005を使用してMSIを構築しています。何らかの理由で私は最後のリリースでアップグレードコードを誤って変更しました。これにより、RemovePreviousVersionsフラグが設定されているにもかかわらず、プログラムがプログラムの追加と削除ダイアログに2回表示されました。私はルージュ更新コードのエントリを入れるためにアップグレードテーブルを編集しなければならないことが分かりました。

このプロセスはInstallShieldで簡単に行えるはずですが、場合によっては使用する必要のあるVS命令も含めることにします。

VS 2005では、アップグレードテーブルを編集する権限がありません(少なくとも私は見つかりませんでした)ので、Microsoft Orcaと呼ばれるプログラムをインストールする必要がありました(MSにはすばらしいコード名がありますが、恐ろしい製品名)。それはWindows SDKに付属しているので、私は既に自分のコンピュータ上に持っていた。 http://msdn.microsoft.com/en-us/library/aa370557%28v=vs.85%29.aspx

そのプログラムでMSIファイルを開くと、リストの一番下にアップグレードが表示されます。対処したいアップグレードコードの新しいエントリを追加する必要があります。ここではそれを説明するリンクです: http://msdn.microsoft.com/en-us/library/aa372379%28VS.85%29.aspx

私は4の属性(msidbUpgradeAttributesIgnoreRemoveFailure)とPREVIOUSVERSIONSINSTALLEDのActionPropertyで、正しいバージョン番号で、削除したいのアップグレードコードで新しい行を作りました。

私がこれを正しく理解していれば、基本的にMSIに、RemovePreviousVersionsフラグと一緒にこの他のアップグレードコードを検討して削除するように指示しました。それは私の場合に働いたので、うまくいけばこれのいくつかがあなたに役立つでしょう。

幸運を祈る!

関連する問題