0

だから、ここに状況があります。

2つのasp.netWebサイトとセットアップでインストールされるいくつかのwinformアプリケーションがあります。それらはすべて、セットアッププロジェクトへのマージモジュールとして表されます。

現在、アプリケーションのグローバルバージョンを更新する場合は、すべてのバージョンをasp.netWebサイトなどに更新する必要があります。asp.netアプリケーションのアセンブリ情報でバージョンを検出することは非常に簡単です。ここでの難しさは、「グローバル」セットアップバージョンを検出することです。(ここで、Webサイトはバージョン1.5ですが、グローバルセットアップ自体はバージョン3.4です)。

ある時点で、setup.exe / setup.msiファイルを見つければ、それを再帰的に参照できると思いますが、それは必ずしも最善の解決策ではありません。バージョンごとの各セットアップは、サーバーの個別のフォルダー(c:\ Setups \ Product 1.0 \ Setup.exe、c:\ Setup \ Product 1.5 \ Setup.exeなど)に保存されます。

助言がありますか ?

4

2 に答える 2

1

「グローバル」セットアップバージョンを定義します。各パッチがすべてではなく一部のアセンブリを更新するため、1つのアセンブリのバージョン、またはアセンブリのいずれかが、最後にインストールされたパッチを反映していない可能性があると言っていますか?

3つのオプション:

  • 各構成ファイルにグローバルバージョン情報を保持し、インストールされているすべてのコンポーネントのすべての構成に更新を毎回プッシュします(非推奨)。
  • 共有構成ファイル、または他の構成から「メイン」構成への参照を提供します。これは、実行可能プロジェクトのいずれかから参照でき、構成が毎回更新されることを確認します。
  • ソフトウェアパッケージのグローバルバージョンを含むレジストリキーを維持します。

インストールとパッチ適用はシステムの複数の領域に分散しているため、3つのうち最後のものを選択しますが、すべての領域でソフトウェアレジストリキーを読み取ることができる必要があります(更新しない場合)。プロセスは難しくありません。静的なSystem.Win32.Registryオブジェクトを参照して、LocalMachine、CurrentUserなどのベースキーを取得し、そこからRegistryKeyオブジェクトをナビゲートする(またはキーパスを使用して最初から作成する)ことでツリーをトラバースできます。さまざまなWebファイルとapp.configファイルのAppSettingでキーパスを指定できます。これは、キー自体の値ほど頻繁には変更されないはずです。

于 2010-09-08T20:07:56.617 に答える
1

1つのMSIから複数のパッケージをインストールする場合は、MSIをARPにリストするのが最善です。そうすれば、この「グローバルセットアップ」のバージョンを将来のMSIですぐに利用できるようになります。セットアップの作成に使用しているテクノロジがわからない場合、より確実なアドバイスを提供することは困難ですが、WiX(WindowsインストーラーXML)では、これを自動的に処理するアップグレード要素を含めるだけです。ほとんどのテクノロジーには、現在のインストールバージョンを確認するための何らかの方法が必要です。

于 2010-09-09T07:06:15.177 に答える