none
ngen化したモジュールのインストーラーによる配布について RRS feed

  • 質問

  • お世話になります。

    フィードバックに以前からあるトピック『Ngenで作ったファイルを配布できるように。 』とかぶる内容なのですが、ngen化したモジュールのインストーラーによる配布はどのような形でモジュールの用意、インストーラーの作成を行えばいいでしょうか。
    現状では普通に作成した.NETモジュールをインストールし、インストール後にngenを裏タスクで実行する形態をとっています。
    これではユーザーのPCに無用に重い負荷をかけることになるため、あまりよろしくありません。
    (配布するモジュールのサイズにもよりますが、ngen install~ngen updateまでで大体3~5分くらい必要)

    IronPythonの配布msi を眺めていて気がついたのですが、この中には事前にngen化されたモジュールが含まれていて、インストールするだけでGACの更新が不要になっているもようです。

    ところが、IronPython本体のソースコードは公開されているもののこのmsiを作成するためのプロジェクトのソースコードが見当たらず、事前ngen化の手法がよくわかっておりません。
    ご存じの方はいらっしゃいませんでしょうか。
    2010年3月18日 8:41

回答

  • へぇ。。。と思ってみてみました。

    NGENされたファイルを含んでいるのではなく、WiXのカスタムアクションを使って実行にNGENしてます。

    もともと、NGENはそのマシンのリソースに合わせてJIT相当の処理を事前に行う仕組みなので
    実行環境以外でNGENすることに意味をもっていません。

    なので、動作としてはしごく当然な作りになっています。

    WiX が NGEN をどのように行っているか?などは、WiXのプロジェクトを参照してください(こちらもオープンソースです)。

    ちなみに、IronPython 2.6 のインストーラは WiX 2.0.4415.0 でビルドされてました。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク 菊地俊介 2010年3月26日 9:40
    2010年3月18日 10:31
  • まとまったドキュメント...ないですねw

    一応、一番まとまってるのは、WiXのヘルプファイルがあります。あれを日本語化してくれるとうれしいんですが。。。VSバンドルは流れちゃったので、少なくとも当座日本語化される可能性は0ですね(MSDNにでも乗ってくれれば自動翻訳通るんですがねーw)。

    あとは、参考にしてると思いますが、チュートリアルの日本語版くらいです。一応私の記事もありますが、あれは本当に初めて作るときのとっかかり程度で本格的にやるとなると、自力でいろいろ調べないと。。。というのはありますね。
    #もっとも、そういう風に作ってるんで、あちこちに本家へのリンクがあったりするわけですがw

    あとは、ML(http://www.freeml.com/msi/)があるくらいかな。ほかははまったところをブログに書いてるというのは見かけますが、いわゆる網羅的なというのはないと思います。

    あったら、耳に入ってくるだろうし。。。w


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク 菊地俊介 2010年3月26日 9:40
    2010年3月19日 11:14

すべての返信

  • へぇ。。。と思ってみてみました。

    NGENされたファイルを含んでいるのではなく、WiXのカスタムアクションを使って実行にNGENしてます。

    もともと、NGENはそのマシンのリソースに合わせてJIT相当の処理を事前に行う仕組みなので
    実行環境以外でNGENすることに意味をもっていません。

    なので、動作としてはしごく当然な作りになっています。

    WiX が NGEN をどのように行っているか?などは、WiXのプロジェクトを参照してください(こちらもオープンソースです)。

    ちなみに、IronPython 2.6 のインストーラは WiX 2.0.4415.0 でビルドされてました。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク 菊地俊介 2010年3月26日 9:40
    2010年3月18日 10:31
  • まさかWiXの入門記事 を書かれた方から直々にご回答いただけるとは。恐縮です。

    なるほど……。

    WiX側で、MSIにインストール時にngenを実行させるスケジュールを追加する形式になっていたわけですね。

    msiファイルをアーカイブソフトで閲覧しただけだったので正確でない考察になっていたようです。

     

    さっそく、WiXでインストーラーを作り始めているところです。

    網羅的なドキュメントがチュートリアル くらいしか見当たらず、苦労しながらではありますが、

    とりあえず自作のアプリがインストール、アンインストールできるところまで作ってみました。

    ngenを自動実行できるところまで作り込めれば使い勝手がかなり向上するので頑張ってみることにします。

     

    どうもありがとうございます。

    2010年3月19日 10:20
  • まとまったドキュメント...ないですねw

    一応、一番まとまってるのは、WiXのヘルプファイルがあります。あれを日本語化してくれるとうれしいんですが。。。VSバンドルは流れちゃったので、少なくとも当座日本語化される可能性は0ですね(MSDNにでも乗ってくれれば自動翻訳通るんですがねーw)。

    あとは、参考にしてると思いますが、チュートリアルの日本語版くらいです。一応私の記事もありますが、あれは本当に初めて作るときのとっかかり程度で本格的にやるとなると、自力でいろいろ調べないと。。。というのはありますね。
    #もっとも、そういう風に作ってるんで、あちこちに本家へのリンクがあったりするわけですがw

    あとは、ML(http://www.freeml.com/msi/)があるくらいかな。ほかははまったところをブログに書いてるというのは見かけますが、いわゆる網羅的なというのはないと思います。

    あったら、耳に入ってくるだろうし。。。w


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク 菊地俊介 2010年3月26日 9:40
    2010年3月19日 11:14