none
600MBのファイルを含むセットアッププロジェクトをビルドするとエラーになる RRS feed

  • 質問

  • VS2010でセットアッププロジェクトを作成しているんですが

    ファイルシステムに600MBのlzhファイルを追加してビルドすると

    「この操作を完了するのに十分な記憶域がありません。」

    というエラーになります。

    何MBのファイルであればビルドできるんでしょうか?

    また、このlzhファイルはデータファイルでインストール中に解凍したいと思っています。

    可能でしょうか?

    2010年7月1日 2:02

回答

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

    lzh圧縮する理由は元のファイル数が25,000、フォルダー数が900ですので、

    ファイルシステムに追加するのがめんどくさかったからです。

    それなりに理由があるなら理由は最初に書いておくことをお勧めします。

    というか、ファイル数25000、フォルダー数900は、VSセットアップが想定している数量を大幅に上待っている気がします。たぶん動くと思いますが、今後のことを考えるならInstallShieldか、WiXを使うことを検討したほうがいいと思います。

    おそらくコンテンツのたぐいだとは思いますけど。。。ISとかならそういうのを取り込む機能とかも持ってるので、作業工数全然変わりますよ。

     


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク yty0918 2010年7月2日 4:18
    2010年7月1日 4:10

すべての返信

  • 使っているマシンのメモリ量とかが不明なので何MBまでいけるかとかは分かりませんが、

    そもそもインストーラー作るときにもCAB圧縮かかるわけなので、わざわざlzh圧縮かけ

    る意味ってそれほどないと思うのですが。

    解凍など考えるとlzh圧縮前のファイルやフォルダをつかってインストーラー作った方が

    いい気もします。

     


    http://blogs.wankuma.com/hatsune/
    2010年7月1日 2:55
  • 回答ありがとうございます。

    lzh圧縮する理由は元のファイル数が25,000、フォルダー数が900ですので、

    ファイルシステムに追加するのがめんどくさかったからです。

    2010年7月1日 3:01
  • 今でも制限あるのか。。。VSセットアッププロジェクトのビルドエンジンの問題で、あまり巨大なファイルは圧縮できないという仕様(バグかもしれませんが仕様)があります。当時は、9x系OSも正式にサポートしていた時代で他にも制約が多数あったので、そんなもんじゃね?で済まされていた気がします。<自分の周辺w

    具体的にどのくらいのサイズまで添付可能か?はメモリの状況次第なので、いくつまで可能という具体的な数値は公表されていません(というか、作った人本人すら、環境依存なのでわかりませんになると思います)。

    ところで、LZHの中身は1ファイルなのでしょうか?だとすると、VSセットアップではどうにもならないですが、そうではなくたくさんのファイルが収められているのであれば、展開処理をインストーラに行ってもらえるようにするためにLZHではなく、展開された状態のままファイルを追加すれば解決しませんか?

    LZHにしてから添付してもそのまま添付しても圧縮された状態なら対してサイズ変わりませんし。

     


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    2010年7月1日 3:02
  • 回答ありがとうございます。

    lzh圧縮する理由は元のファイル数が25,000、フォルダー数が900ですので、

    ファイルシステムに追加するのがめんどくさかったからです。

    それなりに理由があるなら理由は最初に書いておくことをお勧めします。

    というか、ファイル数25000、フォルダー数900は、VSセットアップが想定している数量を大幅に上待っている気がします。たぶん動くと思いますが、今後のことを考えるならInstallShieldか、WiXを使うことを検討したほうがいいと思います。

    おそらくコンテンツのたぐいだとは思いますけど。。。ISとかならそういうのを取り込む機能とかも持ってるので、作業工数全然変わりますよ。

     


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク yty0918 2010年7月2日 4:18
    2010年7月1日 4:10
  • >とっちゃんさん

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

    InstallShieldについては別途検討したいと思います。

    とりあえず今回は圧縮元を複数の圧縮ファイルにして追加しようと思います。

    また、インストール中に解凍する件はInstallerクラスを使うようにします。

    2010年7月2日 4:18
  • できないのかな?と試しにVS2010のセットアッププロジェクトに適当なファイルをフォルダごと突っ込んでみました。そしたら、あっさりフォルダ構造ごと取り込んでくれました。

    これなら、別途展開処理が必要なくなるので無駄な圧縮ファイルのインストールもなくなると思います。

    操作は、ファイルビューで、アプリケーション フォルダーを選び、右側のリストビュー側にインストール後の構成にあたるフォルダをエクスプローラからドロップしただけです(VS内で処理するとファイルを一つずつ選択となるので注意)。

    いきなり本番だと、25000ものファイルを突っ込むことになって時間がかかるので、あまり数の入っていないフォルダを一つ適当に用意して(体験版風なもの)、それで実験してみるとよいと思います。

    意図したものにそぐうものであれば、展開処理を書く必要がなくなると思いますよ。

     


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    2010年7月2日 4:53