0

Visual Studio 2008のセットアッププロジェクトが変更され、MFCとVCのマージモジュールが、インストールフォルダーに手動でインストールされたDLLに置き換わりました。マージモジュールは問題ありませんが、問題があります。以前のセットアップでは、ユーザーは「Everyone」と「Justme」のどちらかを選択できました。新しいセットアップでは、この選択は効果がなく、マージモジュールがあるため、インストールは常にすべての人に行われます。マージモジュールはすべての人にインストールする必要があります。したがって、以前のインストールが「私だけ」だった場合、新しいインストールは以前のインストールのDLLを削除せず、コントロールパネルには同じ名前の2つのインストールがあります。

新しいバージョンのセットアッププロジェクトでは、ProductCodeが変更され、UpgradeCodeは変更されず、RemovePreviousVersionがtrueに設定され、Versionは以前よりも高くなっています。

セットアップからマージモジュールを除外し、「私のためだけに」新しいバージョンをインストールすれば、すべてうまくいきます。古いファイルは削除され、コントロールパネルにインストールされるのは1つだけです。しかし、再配布可能なパッケージを個別にインストールすることでユーザーに負担をかけたくはありません。

Visual Studio 2008セットアップで両方のマージモジュールを使用し、以前のバージョンが「私だけ」であり、新しいバージョンが「全員」である場合でも、以前のバージョンを削除するようにセットアップに指示するにはどうすればよいですか?

たぶんもっと良い質問は、この問題を解決するために私の代わりに何をしますか?

4

1 に答える 1

0

Windowsインストーラー(MSIファイルのハンドラー)は、別の製品のインストール中に1つの製品をアンインストールしません。また、同じインストールは、ユーザーごと(「私だけ」)とマシンごと(「全員」)の両方にインストールされた場合、2つの異なる製品と見なされます。したがって、マシンごとに新しいものをインストールする場合は、.msiからユーザーごとに古いインストールをアンインストールすることはできません。

オプションは、優先順に並べられています。

  1. アンインストールが必要なものをすべて探してアンインストールするブートストラッパーインストール(.exe)を作成します。マージモジュールを使用する代わりに、ブートストラッパーも前提条件をインストールするための推奨される方法です。
  2. .msiから、何かが間違っていることを検出し、インストールを停止できます。私はこれを行いましたが、最初のオプションでも機能します。
  3. 問題を無視し、それが仕様によるものであると言い、何もしません。それはすべてユーザーの手に委ねられています。
于 2012-12-14T11:44:08.517 に答える