2010-12-21 4 views
3

私はWIXでマージモジュールを構築しています。 * .wxsファイルからマージモジュールを生成するWIXツールを呼び出すバッチファイルは、私の毎日のビルドによって実行されます。WIXマージモジュールをテストする方法は?

これらのマージモジュールのテストを自動化する方法を理解しようとしています。私がテストしたいのは、マージモジュールが必要なファイルをインストールするかどうか、ファイルのバージョンが正しいかどうかなどです。

マージモジュールをインストールするスクリプト一時的な場所で、すべてが正しくインストールされているかどうかを確認してください。しかし、これが正しい方法であるかどうかはわかりません。

マージモジュールの単体テストを書く標準的な方法はありますか?これについてどうやって行くかについてのアイデアは大歓迎です。

答えて

1

私はこれについてよく考えましたが、私が好きなものは思いつかなかった。まず、この統合テストを厳密に単体テストではなく呼びます。第二に、「正しいファイル」と「正しいバージョン」の問題を定義することは困難です。

私はしばしば、WiX/MSIはインストーラが何をすべきかを定義するデータであると言いたくなります。それは本質的に宣言的であり、したがって、正しく定義されています。インストーラの実装を相互にチェックするデータセットを作成したいと思っていますが、最初のデータセットがまだ表現していなかったことを正確に達成するにはどうしたらよいでしょうか?ファイルの2番目のリストを維持するために、アプリケーションに何のファイルがまだ入っているのかを維持するのは時には難しいです。

私はこれについて考え続けていますが、理にかなったアプローチがあるのだろうかと思っていますが、現時点では通常のMSI検証を行っています。

+0

あなたが正しいです、WIXファイル自体は、セットアップがどのようなものであるべきかの宣言と同じものの他の表現は冗長になります。 MSIの検証方法を説明できますか? –

+0

WiXは通常、ビルドの最後に自動的に検証を行います。 http://msdn.microsoft.com/en-us/library/aa372477(VS.85).aspx –

+0

を参照してください。http://blog.deploymentengineering.com/2009/02/msi-tip-authoring-ice- -c-dtf.htmlを使用して –

1

あなたが提案したように、スクリプトや他の小型コンソールプログラムを使って、その仕事をすることができます。

ビルドプロセスでは、マージモジュールだけを使用する基本的なセットアップもできます。あなたのスクリプトはこれをインストールするだけで、他のスクリプトやコンソールアプリケーションを実行して、すべてのファイルが正しいかどうか、正しいバージョンがあるかどうか、すべてのレジストリキーがインストールされているかどうかなどを確認できます。スクリプトはすべてをアンインストールします。アンインストール後にチェックプログラムを実行して、すべてがなくなったこととアンインストールが正しく機能することを確認することもできます。たとえば、インストールおよびアンインストール用にカスタムアクションが設定されている場合は、これをお勧めします。

理想的には、この完全なインストール/アンインストールプロセスは、ビルドサーバの混乱を避けるため、別のマシンまたは仮想マシンで実行する必要があります。

あなたはこのスクリプトを使用して作業を行うことができますが、いったん使用すると、他の将来のマージモジュールプロジェクトや単純なセットアッププロジェクトに対して少しでも変更を加えることができます。

希望すると、これは役に立ちます。

Adrian。

3

インストーラをテストするとき、主な目標は

  1. は、MSIファイル、msiexecレポートの成功(すなわち、リターンコード0)をインストールするとことを確認します。
  2. インストーラの実行後、アプリケーションを起動して正常に動作させることができます。

テストを自動化しておきたい場合は、非対話型インストールをテストするだけで十分です。バッチファイルやコマンドラインから行う方法の例を次に示します。

msiexec /i myinstaller.msi /passive || echo ERROR: non-zero return code! 

2番目の点は少し複雑です。私はこれを達成するための最良の方法は、あなたのアプリケーションにいくつかの統合テストを構築し、インストールした後、これらのテストを呼び出すことがあると思う:

あなたのケースでは
"c:\program files\mystuff\app.exe" /selftest || echo ERROR: non-zero return code! 

マージモジュール全体ではなく、インストーラをテストしています。同じアプローチを使用することができます。マージモジュールを使用する「自己テスト」アプリケーションとそのインストーラをビルドする追加作業を行うだけです。

関連する問題