none
Windows Server 2008でインストールに時間がかかります。 RRS feed

  • 質問

  • Visual Studio 2010でASP.NETアプリケーションを開発を行っています。

    これまで、開発したシステムを対象のサーバ(Windows Server 2003 / IIS 6.0 )にインストールする際は、特に問題はありませんでしたが、

    ここ最近になって、対象のサーバがWindows Server 2008 / IIS7.0になってから、インストール時間が大幅に変わりました。

    同じインストーラを使用してWindows Server 2003にインストールした場合は、5~6分完了しますが、Windows Server 2008で実行すると、早くて1時間、昨日は、2時間以上完了までにかかりました。

    Windows Server 2008はシステムが32ビット、64ビットとあり、それぞれにTarget Platformを変更してインストーラは作成しています。32ビット、64ビットいずれのシステム上でもWindows Server 2008では時間がかかり、これではインストーラは使用できないと顧客からクレームが来てしまって困っております。

    よろしくお願いいたします。

     

     

    2010年12月20日 2:31

回答

  • 直接の回答ではないのですが、何時間もかかるうちで、何の処理にそんなにかかっているかは分からないのでしょうか?

    Vista 系だとインストール時の復元ポイントの作成に結構時間がかかるようですが、それでも数十秒から数分のレベルです。
    (一時的に Volume Shadow Copy サービスを無効にしてみるとか。)

    あるいは、何かネットワークにアクセスするようなことはないでしょうか。

    • 回答としてマーク 山本春海 2011年1月13日 8:46
    2010年12月21日 6:49
  • 「インストーラー」とは、どういったものなのでしょうか?
    インストーラー内部で何の処理をどのような手順で実行しているかは moetenbun さんがご存知のはずですので、時間がかかっている箇所はご自身で特定するしかないと思います。

    パフォーマンス問題は、見込で対処すると大抵外れますので、証拠を固めてボトルネックを特定してから動かないと危険です。
    まずは遅い処理を特定しないと始まらないと思います。インストーラーからログを出したりできないのでしょうか?
    • 回答の候補に設定 山本春海 2011年1月5日 8:59
    • 回答としてマーク 山本春海 2011年1月13日 8:46
    2010年12月24日 1:53

すべての返信

  • 直接の回答ではないのですが、何時間もかかるうちで、何の処理にそんなにかかっているかは分からないのでしょうか?

    Vista 系だとインストール時の復元ポイントの作成に結構時間がかかるようですが、それでも数十秒から数分のレベルです。
    (一時的に Volume Shadow Copy サービスを無効にしてみるとか。)

    あるいは、何かネットワークにアクセスするようなことはないでしょうか。

    • 回答としてマーク 山本春海 2011年1月13日 8:46
    2010年12月21日 6:49
  • ご回答をありがとうございます。

    >直接の回答ではないのですが、何時間もかかるうちで、何の処理にそんなにかかっているかは分からないの>でしょうか?

    はい。原因が分かれば、また、わかる方法があれば、解決への道につながると思っていますが、

    大体の感じからでは、Setup実行後、IISルートディレクトリへのフォルダコピーは即完了していますので、その後の処理、仮想フォルダの設定、アクセス権などなどのところの処理に時間がかかっているのではと勝手に思っています。

    サーバのVolume Shadow Copy サービスについては、無効の状態になっていますので、ここは直接的に関係がないのかと思っています。

    また、お気づきの点がありましたらよろしくお願いいたします。

     

     

    2010年12月22日 4:50
  • 「インストーラー」とは、どういったものなのでしょうか?
    インストーラー内部で何の処理をどのような手順で実行しているかは moetenbun さんがご存知のはずですので、時間がかかっている箇所はご自身で特定するしかないと思います。

    パフォーマンス問題は、見込で対処すると大抵外れますので、証拠を固めてボトルネックを特定してから動かないと危険です。
    まずは遅い処理を特定しないと始まらないと思います。インストーラーからログを出したりできないのでしょうか?
    • 回答の候補に設定 山本春海 2011年1月5日 8:59
    • 回答としてマーク 山本春海 2011年1月13日 8:46
    2010年12月24日 1:53
  • 山本春海さま

    たくさんのご回答をありがとうございます。
    調査にとても時間がかかってしまいましたが、半年経過してもまだ解決には至っておりません。

    まず、インストーラとはからご説明させていただきます。
    VisualStudio2010でASP.netのC#でWebアプリケーションを開発し、その後配布するために、以下の手順を踏んでおります。
    ASP.NETは3.5です。

    1.[Web サイトの発行]ユーティリティを使用してコンパイルしています。
    2.配置プロジェクトの新規作成を行います。
     [セットアップと配置]--[VisualStudioインストーラー]--[Webセットアッププロジェクト]を選択します。
    3.1.でコンパイルしたプロジェクトをWebアプリケーションフォルダに貼り付けし、各フォルダのアクセス権などを設定します。
    4.[ビルド]--[WebSetupのビルド]を行い、セットアップファイルを作成しています。

    出来上がったファイルは、setup.exeとWebSetup.msiです。
    このSetup.exeをWindows Serer 2008(32bit)とWindows Server 2003で其々に実行します。
    Windows Server 2003では10分ほどでインストールは完了します。
    Windows Server 2008では2時間ほどかかります。

    WindowsシステムのTempフォルダを確認すると、実行した時間に一時ファイルが展開されています。
    はじめは、IISに展開する際にアクセス権の設定に時間を取られているのかと疑いましたが、
    IISルートフォルダには、10分ほどで、Webアプリケーションは配置されており、インストール中に環境設定ファイルを書き換えてみるとWebアプリケーションとしてアクセス可能であることも分かりました。

    Tempフォルダに展開されたイメージを削除するなどの処理に時間がかかっているようにも思い、いろいろ調べて、Windows Vista以降に導入されたWindowsのユーザー・アカウント制御(UAC)を一時的に無効にするなどを試してみましたが、特に変化はありませんでした。


    ただ、1.を行わないで、ソリューションエクスプローラのセットアッププロジェクトの配下にプロジェクトを追加し、セットアッププロジェクトをビルドした場合に作成されたsetup.exeとWebSetup.msiを同サーバで実行した場合は、サーバOSの区別なく10分ほどでインストールが完了することが分かりました。

    ただ、ソースをそのままというのは先方から認められていませんので、ソース部分をDLL化する必要があり、どうしても1.の手順を踏む必要があります。

    何か、上記手順で問題点はありませんでしょうか。
    インストールログは、Temp内に出力されていますが、Windows Server 2003と特別変わった点はありません。

    よろしくお願いいたします。

     

    • 回答としてマーク moetenbun 2011年6月23日 10:02
    • 回答としてマークされていない moetenbun 2011年6月23日 10:02
    2011年6月23日 9:22
  • ただ、ソースをそのままというのは先方から認められていませんので、ソース部分をDLL化する必要があり、どうしても1.の手順を踏む必要があります。


    おそらく、ここの認識が正しくありません。

    [Web サイトの発行] は、その名の通り、アプリケーションをビルドしてから実際の Web サイトに発行するまでの一連の処理を行うための機能です。
    Web アプリケーションのビルド + [Web セットアップ] の実行までを一気に行うものと思えば分かりやすいと思います。
    [Web セットアップ プロジェクト] でインストーラーを作成するのであれば、[Web サイトの発行] をする必要はありません。

    [Web セットアップ プロジェクト] で次の設定をすれば、ソースまで配布することはありません。

    ・Web アプリケーション プロジェクトを含むソリューションに、[Web セットアップ プロジェクト] を追加します。
    ・[Web セットアップ プロジェクト] のプロジェクト ファイルを右クリック、[追加] - [プロジェクト出力] を選択する。
    ・[プロジェクト出力グループの追加] ダイアログ ボックスの [プロジェクト] コンボボックスで、対象のプロジェクトを選択する。
    ・同じダイアログ ボックスのリストボックスで、"プライマリ出力" と "コンテンツ ファイル" を選択する。(Ctrl を押しながらクリック)
    ・[OK] ボタンを押してダイアログ ボックスを閉じる。(プロジェクトに、プライマリ出力とコンテンツ ファイルの2つが追加されます。)

    あとは、Web アプリケーション プロジェクトをビルドして、Web セットアップ プロジェクトをビルドするだけです。(プロジェクトの依存関係をつけておけば勝手にやりますが。)
    2011年6月23日 11:08
  • お返事有り難うございます.

    ご教示戴いた鳥操作を行ってみました.

    出来上がったsetup.exeとWebSetup.msiを試していませんが,

    全てを理解した上での操作ではないので,再度改めて1から作成をし、フォルダアクセス権などの諸設定を行いたいと思います.

     

    取り急ぎお礼を申し上げます.

    2011年6月23日 15:16
  • ・Web アプリケーション プロジェクトを含むソリューションに、[Web セットアップ プロジェクト] を追加します。
    ・[Web セットアップ プロジェクト] のプロジェクト ファイルを右クリック、[追加] - [プロジェクト出力] を選択する。
    ・[プロジェクト出力グループの追加] ダイアログ ボックスの [プロジェクト] コンボボックスで、対象のプロジェクトを選択する。
    ・同じダイアログ ボックスのリストボックスで、"プライマリ出力" と "コンテンツ ファイル" を選択する。(Ctrl を押しながらクリック)
    ・[OK] ボタンを押してダイアログ ボックスを閉じる。(プロジェクトに、プライマリ出力とコンテンツ ファイルの2つが追加されます。)

     昨日ご教示頂いた方法ですが、

    プロジェクト出力グループの追加でダイアログボックスにはコンテンツファイルしか選択項目がありませんでした。

    プライマリ出力を少し調べましたが、プライマリ出力として指定できるのは、Exe,DLLを作成するためのWindowsのプロジェクトに限られるといった記載を見かけました。

    Webサイトはコンテンツファイルとしてしか指定ができないです。

    また、コンテンツファイルを指定して作成されたものを実行すると、ソースが丸見えの状態になります。

    プライマリ出力を表示させる方法があるのでしょうか。

    よろしくお願いします。

    2011年6月24日 6:52
  • なるほど、Web サイト プロジェクトでしたか。スレッドの随所に Web アプリケーションという表現がありましたので、Web アプリケーション プロジェクトと思い込んでいました。

    Web サイト プロジェクトですと、次のスレッドの回答が参考になると思います。

    c# - pre compile website in Setup & Deployment - Stack Overflow
    http://stackoverflow.com/questions/461842/pre-compile-website-in-setup-deployment

    Web サイト プロジェクト用の Web Deploy Project を作成し、そのプライマリ出力を Web セットアップ プロジェクトに追加しています。
    Web Deployment Projects のアドインの URL が出てきますが、2010 用は次のところです。

    Download Details - Microsoft Download Center - Visual Studio® 2010 Web Deployment Projects
    http://www.microsoft.com/download/en/details.aspx?id=24509

    そもそも Windows Server 2008 でセットアップが遅くなる原因が分かっていませんので、これで解消できるかは分かりませんが。
    2011年6月24日 9:59