- PR -

インストーラーでのバッチ起動

1
投稿者投稿内容
ぼん
会議室デビュー日: 2007/07/20
投稿数: 3
投稿日時: 2007-07-20 16:03
はじめまして。
よろしくお願いします。

【開発環境】
Visual Studio .net 2003
.NetFramework 2.0
windows XP SP2


上記の環境でセットアッププロジェクトを利用して
別のプロジェクトで作ったEXEのインストーラーを作っています。

EXEの起動時間が初回とそれ以降で差があるため、
ngen.exeを使用して高速化を図ろうと思っています。

【疑問点】
1・EXEをインストール後に自動でngen.exeを実行したいのですが、
  インストーラーの設定で可能なのかどうかわかりません。

2・現在はngen.exeを実行するバッチをEXEと同じフォルダにインストールし
  手動で実行しています。
  1の方法が不可の場合はこのバッチを起動することで対処したいのですが、
  インストーラーでバッチを起動する方法がわかりません。

わかりづらいかもしれませんが、
上で「インストール後」と言っているのは
「インストール完了画面」を出す前で、
目的のEXEがインストールされた後にngen.exeを実行したいです。

以上に関して、設定方法、参考ページ等ご教授願いたいと思います。
よろしくお願いします。
IIJIMAS
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 77
投稿日時: 2007-07-21 08:18
以下のリンク先ががご参考になりませんか。

#私自身はngenは使ったことも使う予定もないですが…それほど効果があるのですか?

参考リンク:
MSDN Library Japan
チュートリアル : カスタム動作を使用して、インストール中にアセンブリをプリコンパイルする
http://msdn.microsoft.com/library/ja/vsintro7/html/vxwlkWalkthroughUsingCustomActionToPrecompileAssermblyDuringInstallation.asp

チュートリアル : カスタム動作を使用した、インストール時のアセンブリのプリコンパイル
http://msdn2.microsoft.com/ja-jp/library/3hwzzhyd(VS.80).aspx

Insider.NET 会議室(ここ) 過去スレッド
件名:[C#] 状況に応じてコンパイルのタイミングを細かく制御したい
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14465&forum=7

MSDN フォーラム » フィードバック » Visual Studio フィードバック » Ngenで作ったファイルを配布できるように。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=747695&SiteID=7
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-07-21 13:08
引用:

1・EXEをインストール後に自動でngen.exeを実行したいのですが、
  インストーラーの設定で可能なのかどうかわかりません。



不可能ではありません。

Windows Installer/.msi についてきちんと勉強して、.msi に ngen.exe を起動する「カスタム アクション」を追加すればよいです。

この際、実行するべき ngen.exe のパスの取得がちょっと面倒かもしれません。

引用:

2・現在はngen.exeを実行するバッチをEXEと同じフォルダにインストールし
  手動で実行しています。
  1の方法が不可の場合はこのバッチを起動することで対処したいのですが、
  インストーラーでバッチを起動する方法がわかりません。



.exe を起動するのも .bat/.cmd を起動するのも、手順は同じです。
どちらか一方が実現できれば、もう片方も同じ手法で実現可能です。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-07-21 13:11
引用:

#私自身はngenは使ったことも使う予定もないですが…それほど効果があるのですか?



まったく効果が無いこともないと思いますが、あまり実感できないケースが多いように思います。
_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
ぼん
会議室デビュー日: 2007/07/20
投稿数: 3
投稿日時: 2007-07-23 14:32
IIJIMAS 様、渋木宏明(ひどり) 様

回答ありがとうございます。

ご提示いただいた

引用: --------------------------------------------------------------------------------

チュートリアル : カスタム動作を使用した、インストール時のアセンブリのプリコンパイル
http://msdn2.microsoft.com/ja-jp/library/3hwzzhyd(VS.80).aspx

--------------------------------------------------------------------------------

を作って試しました。
その結果、インストール自体もうまくいき、
ngen.exeも起動でき、正常終了を確認しました。

C:\\Windows\\assembly にはなぜかInstallClass は見つけられませんでしたが、
ngen.exe display
にて確認できました。

ありがとうございました。

引用: --------------------------------------------------------------------------------

#私自身はngenは使ったことも使う予定もないですが…それほど効果があるのですか?

--------------------------------------------------------------------------------

ngenを使ったことで平均20秒=>17秒、と3秒程度短くなりました。
まだ改善点はあるとは思いますが。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-24 07:38
引用:

ぼんさんの書き込み (2007-07-23 14:32) より:

ngenを使ったことで平均20秒=>17秒、と3秒程度短くなりました。
まだ改善点はあるとは思いますが。


これは初回起動でしょうか? 初回起動にしても 17 秒はちょっと長すぎだと思います。 通常の .NET のアセンブリは初回起動はそれなりに重いですが、2 回目以降はストレスなく動作するのが普通だと思います。 もちろんスペックや環境に大きく依存します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ぼん
会議室デビュー日: 2007/07/20
投稿数: 3
投稿日時: 2007-07-25 10:27
じゃんぬねっと 様

引用: --------------------------------------------------------------------------------

これは初回起動でしょうか? 初回起動にしても 17 秒はちょっと長すぎだと思います。 通常の .NET のアセンブリは初回起動はそれなりに重いですが、2 回目以降はストレスなく動作するのが普通だと思います。 もちろんスペックや環境に大きく依存します。

--------------------------------------------------------------------------------
初回起動の計測値です。
おっしゃる通り2回目以降は遅くても5秒もあれば起動します。

【テスト環境】
OSがWIN2000、メモリが512MB
SQLサーバーが動いています。

フォームを表示する前にSQLサーバーのデータをチェックしているので、
現在はデータのチェックを行う前に
スプラッシュウィンドウを表示することで見た目上は対処しました。
1

スキルアップ/キャリアアップ(JOB@IT)