実行結果
サンプルスクリプトを実行した結果を下図に示します。
VSS DBに格納されているISMファイルと編集後のISMファイルを比較した結果です。製品名にあたる部分に、引数で渡した値(例:Release1)が追加されていることが分かります。
作成されたインストーラでも、引数で渡した値(例:Release1)が追加された状態が確認できます。
作成されたインストーラを右クリックし、プロパティを確認すると、引数で渡した値(例:Release1)が追加された状態が確認できます。
プログラムの追加と削除からも、引数で渡した値(例:Release1)が追加された状態が確認できます。
まとめ
本稿では、NAnt/NAntContribを利用して、ソース取得、ビルド、InstallShieldプロパティファイル(ISMファイル)の編集、インストーラ作成を自動で行う方法を紹介しました。他にも、Cruise Control.NETや、Draco.NET等と、NAntを組み合わせて利用することで、自動ビルドを実現する方法もあります。
NAnt/NAntContribはビルド作業のためのツールという枠にとどまらず、さまざまな作業の効率を飛躍的に向上させることができる優れたツールです。ぜひ使ってみてください。
付録:本稿で使用した主なタスクのリファレンス
vssgetタスク
VSS DBから指定したプロジェクトおよびファイルを取得します。
属性名 | 型 | 説明 | 必須 |
localpath | directory | ファイル取得先(ローカルワークスペース)のパス。 | ○ |
filetimestamp | FileTimestamp | ローカルファイルのタイムスタンプ設定の種類。表:filetimestamp 属性で設定できる値を参照。デフォルト値はCurrent。 | × |
recursive | bool | 指定したプロジェクト以下を、再帰的に取得するかどうか。デフォルト値はtrue。 | × |
writable | bool | ローカルに取得したファイルの書きこみ可能にするかどうか。 デフォルト値はtrue。 | × |
removedeleted | bool | VSS DB上で削除するファイルを、ローカルワークスペースからも自動的に削除するかどうかを指定。デフォルト値はfalse。 | × |
replace | bool | 書き込み可能ファイルの置換をするかどうか デフォルト値はfalse。 | × |
path | string | 取得する、VSSプロジェクトおよびファイルのパス(記述形式は「$/」で始めること)。 | ○ |
username | string | VSS DBにログインするためのユーザー名。ユーザー名を指定せず、VSSアドミニストレータの「ネットワーク ログオンユーザー名を基に自動的にユーザーをログオン」設定にチェックが入っている場合は、VSS DBにログイン時に、現在のWindowsユーザー名を適用。 | × |
password | string | VSS DBにログインするためのパスワード。 | × |
version | string | 指定したバージョン、指定した日付、または指定したラベルが付いているプロジェクトやファイルを取得するように指定。省略された場合は、最新のバージョンを適用。 | × |
failonerror | bool | タスク実行中にエラーが発生した場合、ビルドプロセスを中止させるかどうか。デフォルト値はtrue。 | × |
if | bool | 値がtrueならば、タスクは実行される。falseならば、タスクはスキップされる。デフォルト値はtrue。 | × |
unless | bool | if 属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。デフォルト値はfalse。 | × |
verbose | bool | 詳細なログを出力するかどうかを設定。デフォルト値はfalse。 | × |
値 | 説明 |
Current | ローカルファイルのタイムスタンプに、現在の時刻を設定。 |
Modified | ローカルファイルのタイムスタンプに、ファイル変更時の時刻を設定。 |
xmlpokeタスク
XMLファイル内の、XPath式によって指定された部分の値を置き換えます。
属性名 | 型 | 説明 | 必須 |
file | file | 編集対象であるXMLドキュメントファイルの名前。 | ○ |
value | string | 選択された要素や属性の、置き換え後の値。 | ○ |
xpath | string | 値を編集したい要素や属性のXpath。 | ○ |
failonerror | bool | タスク実行中にエラーが発生した場合、ビルドプロセスを中止させるかどうかを設定。デフォルト値はtrue。 | × |
if | bool | 値がtrueならば、タスクは実行される。falseならば、タスクはスキップされる。 デフォルト値はtrue。 | × |
unless | bool | if 属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。 デフォルト値はfalse。 | × |
verbose | bool | 詳細なログを出力するかどうかを設定。 デフォルト値はfalse。 | × |
ネスト要素<namespaces>~</namespaces>について
名前空間プリフィックスを使用して要素名と属性名を指定する場合に指定します。
属性名 | 型 | 説明 | 必須 |
prefix | string | 名前空間に割り当てるプリフィックス。 | ○ |
uri | string | 名前空間に割り当てるURI。 | ○ |
if | bool | 名前空間がXmlNamespaceManagerに加えられるかどうかを示す。trueならば、XmlNamespaceManagerに加えられる。falseならば、タスクはスキップされる。 デフォルト値はtrue。 | × |
unless | bool | if 属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。 デフォルト値はfalse。 | × |
<xmlpoke file="sample.xml" xpath="/Sample/@xsi:noSchemaLoc" value="C:\sample.xsd"> <namespaces> <namespace prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance" /> </namespaces> </xmlpoke>
参考資料
- NAnt 公式ホームページ
- NAntContrib 公式ホームページ
- NAgile.com
- 『NAgilerの日記』 NAgiler 著