2012-03-10 17 views
7

Visual Studio 2010でInstallShield LEを使用していましたが、かなり制限されており、バグが発生することがあります。私は有料のInstallShieldのバージョンを見ていましたが、これらのバージョンもその価格タグには限界がありました。WindowsインストーラXML(WiX)の自動更新とアップグレード管理

私はWiXに切り替えることにしました。私は数年前にそれについていくつかの経験がありました。 WiXツールでSharpDevelopを使用して簡単なインストーラを作成するのはかなり簡単でした。

今私はWiX用のソリューションとツールを収集しようとしています。基本的に、私は(私のクライアントによって要求された)次の機能を取得する必要があります。

  • 私は、インストーラを起動したとき、それは、サーバー上のテキストファイルを確認する必要がありますし、新しいバージョンが利用可能であるかどうかを確認します。その場合、インストーラは更新されたインストーラパッケージをダウンロードして起動できます(WiXにダウンローダユーティリティはありますか?)

  • 解決方法私のアプリケーションの主な依存関係は.NET 4(Windowsインストーラ3に依存します)です。インストーラは、ユーザにダウンロードとインストールを自動的に提供する必要があります。

  • 依存関係のインストールプロセスのログファイルも収集します。 .NET4またはWindowsInstaller3のインストールが失敗した場合に備えて、ユーザーがさまざまな.logファイルを探したいとは思わない。すべての情報を1か所に集め、何かが失敗した場合は、完全なインストールログファイルを保存して私に送信するオプション付きのカスタムポップアップダイアログを表示する必要があります。

  • インストーラはif私のアプリの新しいバージョンが既にインストールされていて、それが終了する前に意味のあるカスタマイズされたエラーメッセージが表示されます。

  • インストーラは私の古いバージョンのアプリケーションが既にインストールされているかどうかを検出できます。インストールを終了するか、以前のバージョンをアンインストールして新しいバージョンをインストールするようにユーザーに指示します。ところで、マイナーなコンポーネントアップグレードは計画されていません。私はすべて新鮮なものを再インストールすることをお勧めします(これはWindowsInstallerの点ではメジャーなアップグレードです)。 InstallshieldのLEは、それだけで他の製品に関するメッセージとエラー・ボックスを示し、このために私には失敗したが、

  • アップグレードの場合、インストーラは、アプリケーション・コンポーネントの一部かどうかを検出することができるはずアンインストールして提供していませんでした私は私はそのまま私のUpgradeCodeを続ける場合でも、アップグレードを管理するために少し痛みを伴うことも読んだことが

を「失敗したインストール」を使用(アプリケーション・プロセスを実行している)であり、カスタムエラーメッセージだけでなく、いくつかの不可解を表示このコードは圧縮された形でWindowsレジストリに格納されており、ダウンロードしたファイルの名前を変更すると、WindowsInstallerによって全く新しい製品として検出される可能性があります。 rこれはWindowsInstallerの.msiファイルの場合に過ぎないかもしれません.WiXはこの問題を回避するためのいくつかのトリックを持っていますか?

アップデートのダウンロードについて - この機能はアプリケーション自体にも必要です。私はそれを効率的に実装する方法がわからないので、WiXインストーラと私のアプリケーションの両方で同じアップデートダウンローダコード/ユーティリティを再利用できます。

現在のWiXツールを使用してこれらの要件をすべて満たすことは可能でしょうか、あるいはゼロからいくつかのコンポーネントをコーディングする必要がありますか?

答えて

9

WiXは間違いなく私の意見になります。

  1. 私は、インストーラを起動したとき、それは、サーバー上のテキストファイルを確認する必要がありますし、新しいバージョンが利用可能であるかどうかを確認します。それはケースだ場合、 は、インストーラは、更新インストーラ パッケージをダウンロードして起動することができるはずです(WiXの内の任意のダウンローダユーティリティがあるのですか?)私の意見で

    、この種の機能は、で最高の処理されますアプリケーション。ただし、カスタムブートストラップでこのような機能を実装できます。 WiXの最新の開発にはブートストラップエンジンBurnが含まれており、独自のカスタムブートストラップをその上に書くことができます。

  2. 解決の依存関係。私のアプリケーションの主な依存関係は.NET 4(Windowsインストーラ3に依存します)です。インストーラは、あなたが前提条件として.NETをインストールするには、標準のWiXのbootstrapperを使用することができます

    自動的にそれらをダウンロードしてインストールし に

    をユーザーに提供する必要があります。独自のカスタム管理ブートストラップアプリケーションを作成する場合は、あなたはまた、依存関係のインストールプロセスのログファイルを収集し、インストールプロセスをログに記録あなたのブートストラップas in this example

  3. に.NETに前提条件をインストールすることができます。私はユーザーにしたくない .NET 4.0またはWindowsInstaller3 インストールが失敗した場合に、さまざまな.logファイルを探します。すべての情報は1つの の場所に収集することができるはずですし、何かが失敗した場合、私は、ユーザーに完全なインストールのログファイルを保存するオプションを持つカスタムポップアップ ダイアログを表示し、2を使用して私に に

    それを送信する必要があります上記のブートストラップ方法を使用すると、msiを起動するときにロギングのパラメータを指定できます。自分のカスタム管理ブートストラップでは、インストール時に作成されたログファイルを開くためのボタンを作成しました。それは使用して

    あなたがこれを行うことができ

    を終了する前に

  4. インストーラが既にインストールされている私のアプリの新しいバージョンがあるかどうかを検出し、意味のあるカスタマイズされたエラー メッセージを表示することができるはずlaunch conditions

  5. インストーラーは、既にインストールされている古いバージョンのマイアプリがあるかどうかを検出できるはずです。ユーザーにインストールを終了するか、 をアンインストールして新しいバージョンをインストールします。私は すべての新鮮なものを再インストールすることを好む(おそらく、これは WindowsInstallerという条件でのメジャーアップグレードです)。 InstallshieldのLEは、このために私に失敗し、このmajor upgradesは少なくとも複雑 アプローチです。それだけで 他の製品に関するメッセージとエラー・ボックスを示したが、 は私の経験では、それを

    をアンインストールして提供していませんでしたアップグレードの場合は

  6. アプリケーションコンポーネントの一部は、(アプリケーション・プロセスを実行している)を使用していると は、カスタムエラーメッセージだけでなく、いくつかの不可解な「インストール が失敗した」と表示された場合、インストーラが検出することができるはずです私はWiXの/ Windowsインストーラは、これらの のシナリオを処理し、自動的にあなたのinstalleに余分な 何かをオーサリングすることなく、 ファイル/アプリケーションがシャットダウンする必要があることをユーザーに通知する時、一般的には良いと思います

    r。

WiXとBurnを使用して独自のカスタムマネージドブートストラップを作成することができます。しかしそれは自明ではない。最適な場所は、ソースコードをWiX Weekly Releasesにダウンロードし、プロジェクトsrc \ Setup \ WixBAをチェックアウトすることです。彼らがWiXをインストールするために書いたカスタムBAです。 WiX 3.6はまだリリースされていないので(まだかなり安定していますが)、あまり多くのドキュメンテーションはありません。しかし、アップグレードやロギングを処理することができるしっかりしたWiXインストーラを作成するために、独自のBAを作成する必要はありません。

+0

偉大で詳細な説明と役に立つリンクありがとうございます。私はバーンについて知らなかった、私は間違いなくそれを見守るだろう。 – JustAMartin

関連する問題