2

新しい Windows インストーラー ファイル (MSI) が古いバージョンの MSI に正しくインストールされないのはなぜですか? しかし、それは私を助けませんでした。

セットアップ パッケージ (MSI) によってインストールされるプログラム (Office へのプラグイン) があります。

当初、プラグインとセットアップ プロジェクトは Visual Studio 2005 で作成されました。ソリューションは現在、Visual Studio 2010 に移動されています。新しい MSI を作成し、それを古いバージョンにインストールしようとすると、修復を行う前に新しいバージョンが機能しません。 [プログラムの追加と削除] -> [インストールの変更] -> [修復] を使用して、最初に古いバージョンを削除すると、新しいバージョンが完全にインストールされます。

新しい MSI は、コンピューターの経験がない複数のユーザーによって使用されるため、古いバージョンを削除して新しいバージョンをスムーズにインストールできることが重要です。

RemovePreviousVersion が True に設定されています。バージョンを 3.1.1 から 4.0.0 にアップグレードし、そのプロセスで新しい ProductCode を受け入れました。Orca で Reinstallmode を amus に設定しましたが、何も解決しないようです。

ありがとう!

4

5 に答える 5

1

私の理解が正しければ、新しいバージョンの修復を実行するとアップグレードが機能するとおっしゃいましたか? この状況は、両方のパッケージがコンポーネントを共有している場合、つまり、パッケージ コンポーネントの GUID が重複している場合に発生する可能性があります。これを追跡する最善の方法は、インストールの詳細なログを作成して分析できるようにすることです。

古いバージョンは既に削除されており、パッケージのコンポーネントが正しくインストールされているため、修復中に古いバージョンと競合することはありません。これが、その後プラグインが機能する理由です。

詳細なログを作成して確認できますか?

于 2012-04-04T10:02:15.420 に答える
0

ログから詳細を取得しようとしましたが、多くの情報を見つけることができました。しかし、修復の理由を検出する別の方法を見つけました。オンデマンド インストールの原因に関する詳細情報を取得するには、イベント ビューア (「開始 -> 実行」、「eventvwr.msc」) を開き、「MsiInstaller」ログ メッセージのアプリケーション ノードの下を調べます。

イベントの種類: 警告 イベント ソース: MsiInstaller イベント ID: 1001 説明: コンポーネント '{00030829-0000-0000-C000- 000000000046}'

もちろん、メッセージと GUID はマシンによって異なります。次に、プロジェクトの GUID をチェックして、修復をトリガーするコンポーネントを確認できます。

于 2012-04-13T14:11:35.130 に答える
0

もっと教えてください。バージョン番号、製品コード、コンポーネントコード、アップグレードコード、およびパッケージコードを交換していますか? どのソフトウェアを使用していますか?

通常、製品内で同じアップグレード コードを維持します。古い/現在のアップグレード コードを含むアップグレード テーブルでバージョン番号を指定する必要があります。

RemoveExistingProductsをスケジュールする場所によっては、コンポーネント コードを保持している場合、一部の古いコンポーネントが置き換えられない可能性があります。

私は常にInstallInitializeの後にイベントをスケジュールします。

アクションFindRelatedProductsが呼び出されているかどうかを確認します。

この投稿では、WIX を使用したサンプルを見つけることができます。

于 2013-09-23T07:18:25.640 に答える
0

奇妙なことに、2 番目のログには目に見える問題がないため、アップグレードを正しくインストールする必要があります。詳細を取得するには、OS が自動修復をトリガーしたときに作成される詳細ログが必要です。このログを作成するには、 http ://support.microsoft.com/kb/2545723 で説明されているように、グローバル ログを有効にする必要があります。

于 2012-04-10T12:29:18.970 に答える