9

エンドアプリケーションを形成するために一緒にインストールする必要があるいくつかのコンポーネントMSIパッケージがあります。

問題は、パッケージを構成するコンポーネントを更新して、コンポーネントをhttpファイルサーバーで再起動できることです。どのようなアプローチを取るべきですか?

私が書いているインストーラーは「マスター」インストーラーです。その1つのコンポーネントでのみアップグレードを実行するには、クライアントマシンにインストールされている各コンポーネントのバージョンを読み取ることができる必要があります。

また、アプリケーションを初めてインストールする場合、インストーラーは必要なすべてのコンポーネントをダウンロードしてインストールします。

Installshield2009を使用しています。

チェーンされたMSIを調べましたが、マスターインストーラーが空です。できるだけ軽量にする必要があるからです。

ブートストラップアプリケーションの作成方法がわかりません。私の会社では、installshieldを使用してインストーラーを作成することを望んでいます。

私は調査しました-そして明らかに前提条件はアンインストールされることを意図されていません。


バージョン番号を変更して、ダウンロードで必要なコンポーネントのみをダウンロードし、インストーラー全体をダウンロードしないようにすることで、マイナーアップデートを実行できると思います。現在、私はあなたが提案した方法(sascha)を実装しており、私の会社はInstallShieldを通じて提供されるFLEXnet接続サービスを使用している。私が言及した「コンポーネント」(開発者が使用するのが大好きな用語)は、InstallShieldのコンポーネントの概念と概念が似ています。ただし、「コンポーネント」を機能によってカプセル化されるように変更したため、リリースのビルド時に、各「機能」がcabファイルにラップされるように選択できます。

これはとても紛らわしいように聞こえます-私にとってさえ。

機能<コンポーネント(サービスを含む)に頼ってきました

私の会社は、Installshieldを除く他のインストーラープログラムの使用を拒否しています。私の推測では、遠い将来に前提条件の要件を更新するには、新しいインストーラーを作成し、アプリケーションをメジャーアップグレードとして再リリースする必要があります。それは私には理にかなっています。

Perermtate、以前にインストールされた前提条件をアンインストールする方法はないと思います。これは、前提条件が他のアプリケーションのプラットフォームとして必要になる可能性があるためです。すべての「前提条件」は、アプリケーションのサードパーティコンポーネントであることが意図されていたためです。 。

ご回答ありがとうございます!

4

4 に答える 4

4

私は似たような問題を見てきましたが、私が知っている簡単な答えがないので同情します。私の理解が正しければ、基本的に、ターゲット システム上の前提条件の現在のバージョンを検出し、欠落している場合はインストールし、古い場合はアップグレードする setup.exe が必要です。

私が過去に使用したいくつかのオプションは次のとおりです。

  1. Microsoft のGeneric Boosttrapper。これは以前から使っていて、むしろ気に入っています。欠点は、前提条件が定義済みのものではない場合、独自のブーストラッパー マニフェストを作成する必要があることです。マニフェストを作成するのは少し難しく、時間がかかる場合がありますが、役立つツールがあります。また、msi がアップグレードを実行できない場合に、インストールされたコンポーネントをアンインストールする方法を見つけることができませんでした (私が遭遇した他の何か)。あなたがそれを理解したら、私に知らせてください!

  2. 独自のブーストラップ/チェイナーを作成します。Microsoft .NET Framework Setup.exe Bootstrapper Sampleから始めました。ソースコードが付属しているため、コンポーネントの展開方法に多くの柔軟性があります. ただし、ここではコードは C++ であり、前提条件を確認して適切なインストール コマンドを発行するためのロジックは扱いにくく、正しく理解するのが困難です。

更新: 私がこれを書いている時点 (2009 年 8 月) ではまだ準備が整っていませんが、Wix プロジェクトはBurnと呼ばれる独自のブートスタッパー/チャニナーに取り組んでおり、Wixを愛する私たちにとって非常に有望に見えます。

于 2008-11-18T01:27:42.437 に答える
1

「マスター」インストーラーは空であり、実際には何もインストールしないため、インストール スクリプトを「ブートストラップ」として使用して、(MSI ベースのプロジェクトではなく) InstallScript プロジェクトを使用できます。InstallScript を使用する場合、InstallShield によって自動的に構成されるため、コードを実行するための環境のセットアップについて心配する必要さえありません。ブートストラップに .NET を使用する場合は、.NET を要求するか、インストールの一部としてインストールする必要があります。

InstallScript プロジェクトは MSI を使用しないため、インストールのインストール実行シーケンス中に他の MSI を実行することを心配する必要はありません。InstallScript の「LaunchAppAndWait」関数を使用して、インストール/更新が必要なコンポーネントのインストールを呼び出すことができます。

于 2009-02-19T17:42:39.313 に答える
1

http://dotnetinstaller.codeplex.comが仕事をします。

于 2010-06-08T01:57:55.807 に答える
0

「コンポーネント」とは、Installshield/MSI Components/Features を指しますか? それとも、独自の用語でこれを使用していますか? 私の知る限り、完全に新しいパッケージ バージョンをリリースしない限り、コンポーネントを更新することはできません。

私の提案は、圧縮されていないファイル (またはコンポーネントごとに 1 つの CAB) を含む「Web ダウンローダー」インストーラーを展開することです。ペイロードは 300kb になり、ユーザーが選択した機能のみがネットからダウンロードされます。

于 2008-11-18T00:48:28.383 に答える