
No.2ベストアンサー
- 回答日時:
私自身は使う側で実際のアプリ側開発を行っているわけではありませんが
圧縮・解凍用のアーカイバDLLは以前より統合アーカイバプロジェクト
として公開されています
http://www.madobe.net/archiver/main-j2.html
>解凍する時に、解凍したファイルのどれか一つを指定して実行
でもってそれらDLL使って自己解凍のメニュー作成画面も作成できます
一例ですが
http://www2.nsknet.or.jp/~micco/exp/sfxsample.htm
にある SFXの設定例 等を見てください
作成された実行モジュールは指定したように動作します
koi1234さん、再び回答頂きましてありがとうございました。
WinSFX32がやりたいことを実現しているソフトです!
アーカイバDLLを用いて、これと同じものが作成できるか、もう少し調査してみます。
ありがとうございました。
No.5
- 回答日時:
>一つに固めるファイル群は、実行時に指定します。
よく理解できていないかもしれませんが
例えば自分が作成したa.exeを実行した場合、別のb.exeをくっつけ、
もう一度a.exe実行時に、b.exeを解凍→実行
ということでしょうか?
最も簡単な方法はa.exe(自分自身)の後ろにバイナリをくっつける方法だと思います。
(確かexe自身の書き換えは可能だったと思います。)
問題は後ろにくっついたファイルのサイズと、ファイルがくっついたかどうかを判定する仕組みがあればよいですね。
例えば、a.exe(自分自身)の後ろから30バイトを読み取り「ABCDEFGHIJ0000000100______b.exe」であればABCDEFGHIJ
でファイルがくっついていることを確認し100バイトを切り出して(解凍して)、b.exeを実行すれば良いんだな
といったようなフォーマットを定義してはどうでしょうか。
sha-girlさん、回答有り難うございました。
sha-girlさんの案を簡単に実現できるライブラリがあれば使ってみたいのですが、
自分で考えて実装するとなると、躊躇してしまいます。
ただ、このあたりを勉強すると、今後使えそうですので、ちょっと勉強してみます。
No.4
- 回答日時:
人様への反応になってしまいますが
>この場合にも、リソースファイルは使用できるでしょうか?
無理だと思いますよ
リソース使ってという話はそのアプリ作成前に確定してないといけませんので
リソースファイルはVCのコンパイル・リンク時に使われます
まともに自分でexe作成したいなら以下情報などが参考になるかもしれません
(正直自前でやるようなもんじゃないです)
http://codezine.jp/article/detail/419
※ 全てちゃんと見るには(無料ですが)登録しないといけないようです (私未登録なので全て見れてません)
実際まとめるのがどのぐらいのファイル数・サイズなのか分かりませんが
圧縮などしないのであれば超巨大なexeファイルになってしまうかもしれません
(そんなものまともに動くんだろうか って不安もあります)
>アーカイバDLLを用いて、これと同じものが作成できるか
質問者さんの場合イメージとしてはそれらDLL使っている
アプリケーションを作成することになります
(例えば http://www.madobe.net/archiver/index.html にある対応アプリを作ることになります)
(分かってるかもしれませんが)
DLLの何かの関数呼べば#2に書いたような(WinSFX32)設定画面が出てくる
ってことではないので其処はお気をつけください
koi1234さん、回答有り難うございました。
リソースファイルは、やはりコンパイル時に確定していないといけないんですね。
もしかしたら行けるか!?と思ったのですが、ダメでしたね。。。
codezineの案は、やはりちょっと難しいですね。
ここまでやるなら、アーカイバDLLを使いたいと思います。
>DLLの何かの関数呼べば#2に書いたような(WinSFX32)設定画面が出てくる
>ってことではないので其処はお気をつけください
逆に画面を出したくないので、その点は良かったです。
No.3
- 回答日時:
自前でやる場合ですが、
Visual C++の場合、リソースファイルがありますよね。
(拡張子rcに記述されているものです)
あそこにファイルの種類を問わずバイナリが置けます。
ですのでそこにexeなり、batなりを放り込み、
ファイルに展開後、WinAPIのCreateProcessなりWinExecを
実行すれば良いだけです。
生データではなく圧縮/解凍もしたいのであれば、事前にデータを圧縮しておきファイル展開時に解凍すれば良いです。
圧縮/解凍の方法ですが、
例えばzlib等はVisualC++用のプロジェクトファイル(lib作成用)も公開されているので使いやすいと思います。
sha-girlさん、回答ありがとうございました。
説明に書き忘れてしまいましたが、一つに固めるファイル群は、
実行時に指定します。
この場合にも、リソースファイルは使用できるでしょうか?
再び質問してしまい、申し訳ありませんがご回答下さい。
よろしくお願いします。
No.1
- 回答日時:
実行モジュールのファイル名が重複するとまともに動きませんが
lzh圧縮などで自動解凍のexeモジュール作れば可能ですが
全て自前でやるというのが前提ですか?
lzhでできるのは間違いないですがzipでも出来たかな・・・・忘れた
(lzh/zipと表現してるのは途中の圧縮ファイル形式で自己解凍にすると最終的にはexeとなります)
↑でいいのであればわざわざ自分で作る必要すらありません
(肝心のexeやbatファイルは別)
koi1234さん、回答ありがとうございます。
>全て自前でやるというのが前提ですか?
圧縮する部分は既存の圧縮ソフトなどを使ってもOKです。
(ただし、圧縮機能を自作ソフトに組み込めなくてはなりません)
複数のファイルを自己解凍形式で圧縮すれば、一つのexeファイルに
出来ることは知っていたのですが、自己解凍形式のファイルを
解凍する時に、解凍したファイルのどれか一つを指定して実行
できるのでしょうか?
再び質問して申し訳ありませんが、回答いただければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行ファイルと実行モジュール...
-
OLE又はDDEを使うVISUAL BESIC...
-
コンポーネント`MSCOMM32.cox'...
-
c/c++ ビルドしたにもかかわら...
-
Access クエリ実行が急に非常に...
-
MDBファイルをCSV出力したい
-
eclipseでSWTのアプリケーシ...
-
AndroidでのRandomAccessFileの...
-
VB6で、C言語の(argv,argc)み...
-
アプリケーションとソースコー...
-
JavaScriptでコマンドプ...
-
以下のように複数のファイルを...
-
jarファイルとjava.exeの関連付...
-
VbscriptにてTeraterm マクロを...
-
unlha32.dll を使用した自己解...
-
HTMLのメールリンクに添付ファ...
-
VS2005 リリースビルドしたEXE...
-
java ファイル出力 Cドライブ直下
-
VBS形式ファイル:ダブルクリッ...
-
C言語初心者の質問失礼します。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
c/c++ ビルドしたにもかかわら...
-
コンポーネント`MSCOMM32.cox'...
-
VB6.0で作ったプロジェクトが起...
-
実行ファイルと実行モジュール...
-
64bit環境で32bitのodbc参照
-
jarファイルとjava.exeの関連付...
-
VBAで他のプログラムが起動して...
-
jarの開き方を教えてください。
-
VBAでMP3を鳴らしたい
-
VC++から引数付きexeファイルの...
-
JavaScriptでコマンドプ...
-
コマンドプロンプトで外のexeや...
-
WScript.Echo と msgbox
-
VBAでEXEファイルを動かす方法...
-
VBS形式ファイル:ダブルクリッ...
-
ネットワーク越しのEXEファ...
-
なぜプロセスはファイルにアク...
-
C言語で計算したファイルをsma4...
おすすめ情報