SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

NAntスクリプトによるビルド効率化TIPS

NAnt+InstallShield活用でビルド・インストーラ作成の自動化を行う

NAntスクリプトによるビルド効率化TIPS その3

  • X ポスト
  • このエントリーをはてなブックマークに追加

実行結果

 サンプルスクリプトを実行した結果を下図に示します。

NAnt実行結果1(コマンドプロンプト)
NAnt実行結果1(コマンドプロンプト)

 VSS DBに格納されているISMファイルと編集後のISMファイルを比較した結果です。製品名にあたる部分に、引数で渡した値(例:Release1)が追加されていることが分かります。

NAnt実行結果2(VSS DBに格納されているISMファイルと編集後のISMファイル)
NAnt実行結果2(VSS DBに格納されているISMファイルと編集後のISMファイル)

 作成されたインストーラでも、引数で渡した値(例:Release1)が追加された状態が確認できます。

作成されたインストーラ
作成されたインストーラ

 作成されたインストーラを右クリックし、プロパティを確認すると、引数で渡した値(例:Release1)が追加された状態が確認できます。

インストーラのプロパティ
インストーラのプロパティ

 プログラムの追加と削除からも、引数で渡した値(例:Release1)が追加された状態が確認できます。

プログラムの追加と削除
プログラムの追加と削除

まとめ

 本稿では、NAnt/NAntContribを利用して、ソース取得、ビルド、InstallShieldプロパティファイル(ISMファイル)の編集、インストーラ作成を自動で行う方法を紹介しました。他にも、Cruise Control.NETや、Draco.NET等と、NAntを組み合わせて利用することで、自動ビルドを実現する方法もあります。

 NAnt/NAntContribはビルド作業のためのツールという枠にとどまらず、さまざまな作業の効率を飛躍的に向上させることができる優れたツールです。ぜひ使ってみてください。

付録:本稿で使用した主なタスクのリファレンス

vssgetタスク

 VSS DBから指定したプロジェクトおよびファイルを取得します。

vssgetタスクの属性
属性名説明必須
localpathdirectoryファイル取得先(ローカルワークスペース)のパス。
filetimestampFileTimestampローカルファイルのタイムスタンプ設定の種類。表:filetimestamp属性で設定できる値を参照。デフォルト値はCurrent。×
recursivebool指定したプロジェクト以下を、再帰的に取得するかどうか。デフォルト値はtrue。×
writableboolローカルに取得したファイルの書きこみ可能にするかどうか。 デフォルト値はtrue。×
removedeletedboolVSS DB上で削除するファイルを、ローカルワークスペースからも自動的に削除するかどうかを指定。デフォルト値はfalse。×
replacebool書き込み可能ファイルの置換をするかどうか デフォルト値はfalse。×
pathstring取得する、VSSプロジェクトおよびファイルのパス(記述形式は「$/」で始めること)。
usernamestringVSS DBにログインするためのユーザー名。ユーザー名を指定せず、VSSアドミニストレータの「ネットワーク ログオンユーザー名を基に自動的にユーザーをログオン」設定にチェックが入っている場合は、VSS DBにログイン時に、現在のWindowsユーザー名を適用。×
passwordstringVSS DBにログインするためのパスワード。×
versionstring指定したバージョン、指定した日付、または指定したラベルが付いているプロジェクトやファイルを取得するように指定。省略された場合は、最新のバージョンを適用。×
failonerrorboolタスク実行中にエラーが発生した場合、ビルドプロセスを中止させるかどうか。デフォルト値はtrue。×
ifbool値がtrueならば、タスクは実行される。falseならば、タスクはスキップされる。デフォルト値はtrue。×
unlessboolif属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。デフォルト値はfalse。×
verbosebool詳細なログを出力するかどうかを設定。デフォルト値はfalse。×
filetimestamp属性で設定できる値(FileTimestamp型)
説明
Currentローカルファイルのタイムスタンプに、現在の時刻を設定。
Modifiedローカルファイルのタイムスタンプに、ファイル変更時の時刻を設定。

xmlpokeタスク

 XMLファイル内の、XPath式によって指定された部分の値を置き換えます。

xmlpokeタスクの属性
属性名説明必須
filefile編集対象であるXMLドキュメントファイルの名前。
valuestring選択された要素や属性の、置き換え後の値。
xpathstring値を編集したい要素や属性のXpath。
failonerrorboolタスク実行中にエラーが発生した場合、ビルドプロセスを中止させるかどうかを設定。デフォルト値はtrue。×
ifbool値がtrueならば、タスクは実行される。falseならば、タスクはスキップされる。 デフォルト値はtrue。×
unlessboolif属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。 デフォルト値はfalse。×
verbosebool詳細なログを出力するかどうかを設定。 デフォルト値はfalse。×
ネスト要素<namespaces>~</namespaces>について

 名前空間プリフィックスを使用して要素名と属性名を指定する場合に指定します。

ネスト要素namespacesの属性
属性名説明必須
prefixstring名前空間に割り当てるプリフィックス。
uristring名前空間に割り当てるURI。
ifbool名前空間がXmlNamespaceManagerに加えられるかどうかを示す。trueならば、XmlNamespaceManagerに加えられる。falseならば、タスクはスキップされる。 デフォルト値はtrue。×
unlessboolif属性の逆。値が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>

参考資料

  1. NAnt 公式ホームページ
  2. NAntContrib 公式ホームページ
  3. NAgile.com
  4. NAgilerの日記』 NAgiler 著

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
NAntスクリプトによるビルド効率化TIPS連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 齋藤 利佳(サイトウ リカ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/909 2007/02/09 00:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング