質問

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

セットアップでインストールされている2つのASP.NET Webサイト + Winformアプリケーションがあります。これらはすべて、セットアッププロジェクトへのマージモジュールとして表されます。

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

ある時点で、setup.exe/setup.msiファイルを見つけた場合、反射でそれを閲覧できると思いますが、それは正確に最良の解決策ではありません。サーバーごとの各セットアップを別のフォルダーに保存します(Ex。C: setups product setup.exe、c: setup setaup.exeなど)

助言がありますか ?

役に立ちましたか?

解決

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

3つのオプション:

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

3つのうち、インストールとパッチングはシステムのいくつかの領域に広がっているため、最後を選択しますが、すべての領域がソフトウェアレジストリキーを読み取ることができるはずです(更新しない場合)。プロセスは難しくありません。 static System.win32.registryオブジェクトを参照して、localmachine、currentuserなどのベースキーを取得できます。そこから、レジストリーキーオブジェクトをナビゲートすることでツリーを通過できます(またはキーパスでゼロから作成します)。さまざまなWebおよびapp.configファイルでAppSettingを使用してキーパスを指定できます。これは、キー自体の価値ほど頻繁に変更されるべきではありません。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top