1

私は大きな問題を抱えています:

古いアプリケーション App1.0.exe があります。このアプリケーションには、App1.0.exe.config (アプリ構成) というファイルがあります。今、私はバージョン 2.0 を作成しました。新しいバージョンでは、Appconfig にさまざまな Appsettings があります。私の質問は、更新インストールを行うときに古い Appconfig を保存するにはどうすればよいですか?

この問題を解決しようとして失敗しました:

-BeforeInstall イベントで古い構成を読み取り、コンテキスト パラメーターに保存して、Afterinstall イベントで新しい構成を書き込みます。- BeforeInstall は新しい構成を読み取ります (古い構成は削除されます)。- 新しい Appconfig をコピーしないで、新しい appconfig を含む AppConfigUpdate.config などの別の名前のファイルをコピーします。インストール後のイベントで、古い構成を File.Move() で保存します。今、私たちは持っています:

-Appconfig.exe.config_Original

-AppconfigUpdate.config

.config_Original を読み取り、AppConfigUpdate.config にパラメーターを書き込み、これの名前を Appconfig.exe.config に変更するよりも

私の問題は、msi に、RemoveExistingProducts というカスタム アクションを実行した後に実行される標準アクションがあることです。したがって、インストーラーをデバッグすると、customaction の最後に古い構成の .config_original と、古い構成からの正しいパラメーターを含む新しい構成の .config が表示されます。しかし、私のカスタム アクションの後、インストールは .config を削除し、.config_original だけが残ります。

RemoveExistingProducts は、更新パッケージで配信されなかったすべてのファイルを削除すると思います。しかし、元の構成が上書きされ、すべてのパラメーターが失われるため、.config を配信できません。

私は現在、この問題に 3 日以上取り組んでおり、あなたの助けが本当に必要です。この問題を解決する方法のアイデアが不足しています。おそらく、あなたの誰かが同様の問題を抱えていましたか?

私の悪い英語でごめんなさい。よろしくお願いします

4

2 に答える 2

2

正しいアプローチは、2 つのカスタム アクションを使用して、古い構成ファイルをバックアップおよび復元することです。バックアップ カスタム アクションは、RemoveExistingProducts アクションの前に実行されます。カスタム アクションの復元は、InstallFiles の後に実行されます。いくつかの単純なスクリプト カスタム アクションで十分です。

カスタム アクションの詳細については、次を参照してください。

http://msdn.microsoft.com/en-us/library/aa368066(VS.85).aspx

残念ながら、Visual Studio のセットアップには、適切なスケジューリング サポート カスタム アクションがありません。別の無料または商用の msi オーサリング ツールを使用する必要があります。

于 2011-09-07T14:52:35.583 に答える
0

おそらく、インストーラーの動作を回避することは可能でしょうか?

インストール中に構成を書き直すのではなく、アプリケーションが起動時に構成が「バージョン 1」形式であるかどうかをテストすることができます。その場合、その時点で更新を実行します。

ここに app.config の更新に関する (古いが有効な) 詳細があります: http://geekswithblogs.net/akraus1/articles/64871.aspx

于 2011-09-07T13:50:05.327 に答える