2017-09-05 18 views
1

私は古いセットアップ(exe)を持っています。これはinstallshieldによって作成されています。古いアプリを新しいものにアップグレードしたい、あるいはWIX Toolsetで古いアプリをアンインストールしたい。いずれかのアイデアがあれば、私を助けてください。事前wixインストーラで別のプログラム(exe)をアンインストールする方法はありますか?

答えて

4

のおかげでは可能性がいくつかあります:

  1. それはインストールするMSIファイルを作成InstallShieldセットアップであるかもしれません。その場合は、UpgradeCodeを見つけてWiXのUpgrade要素を使用するか、古い製品と同じUpgradeCodeを使用してメジャーアップグレードを行う必要があります。

  2. MSIベースでない場合は混乱します。私が使用した技術は、その製品のUninstallStringをレジストリに配置することです。あなたはそれをレジストリ検索でプロパティに読み込むことができます。あなたがしていることは、どのような種類のアンインストールが必要かによって異なります。アンインストール文字列コマンドを取得したら、心配する必要のあるいくつかのことがあります:

    a。そのアンインストール文字列コマンドを即時カスタムアクションとして実行すると、即時カスタムアクションが呼び出されないため失敗する可能性があります。

    b。サイレントにしたい場合は、アンインストールコマンド文字列をプログラムで調べ、サイレントスイッチを追加する必要があります。これは、そのバージョンのInstallShieldが使用するものに依存します。また、「アンインストールの進行を表示」の選択肢があります。

    c。アンインストーラをサイレントモードで実行すると、impersonation = noの場合は高レベルになりますが、サイレントモードで失敗してインストールが続行される場合は、古いバージョンと新しいバージョンがインストールされます。

    d。古い製品をアンインストールした後にインストールが失敗した場合、ユーザーはいずれの製品もインストールされずに残されます。

つまり、障害の可能性が高いため、ケース2には適切なオプションはありません。ほとんどの場合、安全な答えは古い製品を検出し、ユーザーに手動でアンインストールするように要求することです。 MSIモードに入ると、MajorUpgrade要素を使用してシームレスにアップグレードできます。

+0

私はあなたの第1の可能性を見抜いています。今はうまくいきます。この提案をありがとう、本当に私はStackowerflowの新機能ですので、投票はできません。私はあなたのために投票をすることができることを望みます。 –

+0

非MSIの場合、「安全な答えは古い製品を検出して、ユーザーに手動でアンインストールするように依頼することです」というのはコプレーンアウトのようですが、実際はかなり妥当です。 –

関連する問題