2

最小限のファイルをインストールし、いくつかのカスタム アクションを実行する Visual Studio 2008、セットアップおよび配置、セットアップ プロジェクトがあります。また、セットアップ プロジェクトがデプロイするマージ モジュール プロジェクトもいくつかあります。各マージ モジュールには、さまざまなコンポーネントがインストールされる固有のサブ フォルダーを含むモジュールの再ターゲット可能なフォルダーがあります。

私たちが経験している問題は、セットアップ プロジェクトのアンインストール中に、セットアップ プロジェクトによって展開されたファイルがハード ドライブから完全に削除されることです。ただし、マージ モジュールによってデプロイされたファイルはまったく削除されません。

さらに、マージ モジュールによって展開されたファイルをアンインストールした後もハード ドライブにまだ存在する場合、セットアップ プロジェクトを再度インストールしても、マージ モジュールによって展開されたファイルは上書きされません

許容できる結果を得る必要があります。

1) マージ モジュールでデプロイされたファイルがアンインストール中に削除されるようにする 2) マージ モジュールでデプロイされたファイルを新規インストール時に上書きできるようにする

どんな考えでも大歓迎です!

4

2 に答える 2

1

これはおそらくあなたが望んでいた答えではないかもしれませんが、あなたを助けるかもしれない考えです...

質問: 本当にマージ モジュールを使用する必要がありますか? MSM のアイデアは素晴らしいですが、実際には期待どおりに機能しません。

代わりに、(a) アプリのインストールが開始される前に MSI を正常にインストールしてコミットできるため、完全な MSI を埋め込む方がクリーンな場合が多くあります。 (c) アンインストール プロセスなどを使用して、それら (およびそのすべてのファイル) をアンインストールできます。MSMS として提供される Microsoft ライブラリには、代わりに使用できる再頒布可能パッケージの MSI バージョンが常に存在します。

または、このアプリのマージ モジュールを自分で作成しましたか? その場合、残りのコンポーネントと同じインストールおよびアンインストール プロセスに従うため、MSI のコンポーネントとして使用することをお勧めします。また、同じコンポーネントを使用するアプリが複数ある場合は、それらに同じコンポーネント ID を指定すると、それらは共有されます (たとえば、共有コンポーネントがインストールされた 2 つのアプリがあり、そのうちの 1 つをアンインストールすると、共有コンポーネントは他のアプリがインストールされている限り残ります)。

于 2009-08-21T20:37:45.433 に答える
1

過去に同様の問題に遭遇したことがあります。つまり、[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls]レジストリ キーの問題エントリが原因です。アンインストール後にマージ モジュール内のファイルがそこにリストされているかどうかを確認します。参照カウントがオフになっている可能性があるため、Windows インストーラーは、ファイルが別のアプリケーションで使用されているため、ファイルを残す必要があると判断します。

通常、これは、セットアップ ビルド間でコンポーネントの「共有」状態を変更するか、パッケージをパージするときに参照カウントを調整しない MSIZAP (別名 Windows インストーラー クリーンアップ) を使用することによって発生します。

于 2009-08-23T22:23:09.000 に答える