4

私は数日間問題に直面しており、多くの調査の結果、自分のケースに合ったものを見つけることができませんでした.

これが問題です。私は、いくつかのプロジェクトとセットアップ プロジェクトを含むソリューションで Visual Studio 2010 を使用しています。製品をバージョン 1.5 からバージョン 1.6 に更新するために、セットアップ プロジェクトで MSI ファイルを作成する必要があります。

このチュートリアルhttp://www.simple-talk.com/dotnet/visual-studio/updates-to-setup-projects/に従い、ソリューションの各プロジェクトのアセンブリ バージョンとファイル バージョン番号も更新しました。

私のセットアッププロジェクト の設定 は 次 の
とおりです





通常、MSI は既存のバージョンよりも新しいバージョンのファイルを削除し、新しいバージョンに置き換える必要があることを読みました。また、以前の MSI (製品を 1.4 から 1.5 に更新するもの) を実行すると、説明どおりに正常に動作します。(どのバージョンの Visual Studio でコンパイルされたかはわかりませんが、VS2008 であると思います)。

MSI を実行すると、最初に古い .exe を新しいものに置き換える「インストール シーケンス」が実行され、次に .exe を消去する「アンインストール シーケンス」が実行されるようです。そして、インストールが「終了」すると、アプリケーション ディレクトリに .exe がなくなります。(ただし、[プログラムの追加と削除] パネルでは、製品はバージョン 1.6 でインストールされたように表示されます)。

(NB : MSI の「インストール」部分または「アンインストール」部分が実行されていることに気付くことができます。これは、どちらにも、トレースできるコンソール アプリケーションを開くカスタム アクションがあるためです)。

さらに調査した結果、古い MSI と私の ORCA を比較したところ、テーブル InstallExecuteSequence に違いがあることに気付きまし
た。 私の MSI では、RemoveExistingProducts のシーケンス番号は6550で、InstallExecute (6500) と InstallFinalize (6600) の間にあります。 表に他の違いは見られません。

MSI の ORCA を手動で編集して、RemoveExistingProduct のシーケンス番号を 1525 に設定しようとしました。実行時に「アンインストール部分」は正しく実行されましたが、2356 エラーが発生しました (いくつかの調査の後、手動でMSI が破損しています)。

MSI の動作とその修正方法を説明するアイデアを誰かが持っている場合は?

ありがとう

4

2 に答える 2

0

この記事は次の 2 つの点で古くなっています。

  1. それ以降のバージョンの Visual Studio セットアップ プロジェクトのアップグレードが既存のファイルの "最上位" に変更され、その後古い製品が削除されたことは説明されていません。これはバグではなく、機能です。例: 製品をインストールしたデータベースに顧客が 100 万のデータベース エントリを追加した場合、製品の新しいバージョンをインストールする前に、古いアップグレードによってデータベースが削除されます。

  2. 新しいバージョンは古いバージョンの上にインストールされるため、新しいバージョンが古いバージョンを置き換える (ファイル バージョンに基づく) などのファイル置換更新ルールが適用され、最初のインストール後に変更されたファイルは削除されません (したがって、仮想データベースが保持されます)。

https://docs.microsoft.com/en-us/windows/desktop/msi/default-file-versioning

そうは言っても、これが問題の原因ではないようです。VS 2008 から VS 2010 にアップグレードした場合、次の問題があるようです。

https://support.microsoft.com/en-us/help/2418919/fix-files-and-registry-keys-for-the-installation-path-disappear-unexpe

于 2018-08-13T21:25:13.670 に答える