web-dev-qa-db-ja.com

EXEにファイルを保存する方法

了解しました。C#で独自のインストーラーのプログラミングに取り組んでいます。ファイルを.exeに配置するという方針に沿って、File.Copy(file、filedir);を実行できるようにします。

または、これが不可能な場合、私がやろうとしていることを行う別の方法はありますか?

33
S3THST4

独自のインストーラーはコーディングしませんが、本当にファイルをアセンブリに埋め込みたい場合は、強く型付けされたリソースを使用できます。プロジェクトのプロパティダイアログで、[リソース]タブを開き、ファイルを追加します。これで、次を使用してファイルを取得できるようになります。

ProjectNamespace.Properties.Resources.MyFile

次に、以下を使用して埋め込みリソースをディスクに書き込むことができます。

System.IO.File.WriteAllBytes(@"C:\MyFile.bin", ProjectNamespace.Properties.Resources.MyFile);
31
Shawn Miller

正直なところ、独自のインストーラーを作成しないことをお勧めします。インストーラーの作成には多くの問題があります。大手インストーラーメーカーでさえ、実際のインストーラーを作成するのではなく、カスタムMSIパッケージを作成するだけです。

Mirosoftインストーラー(MSI)を使用します。それは正しいことです。独自のカスタムフロントエンドを作成しますが、すでに存在する非常に複雑なホイールを再作成しないでください。

更新:あなたが学習のためにこれをしているだけなら、私はそれを「インストーラー」と考えることを躊躇します。あなたはいつかあなたの「研究」を取り入れてそれを使いたくなるかもしれません、そして率直に言って、それは私たちが新しいバージョンのWindowsが出たときに非常に多くの問題に終わる方法です。人々は、有効ではない仮定で独自のホイールを作成します。

あなたが本当にやろうとしていることは「パッケージング」と呼ばれ、ディスク上のPEイメージの構造を変更することについて話しているので、ExecutablePE形式に精通する必要があります。

ファイルをリソースに配置することで、ある程度までそれをシミュレートできますが、それは実際にはインストーラーや自己抽出機能が行うことではありません。

Self-Extractor チュートリアルへのリンクは次のとおりですが、C#にはありません。

マネージコード実行可能ファイルを使用してこれを実行できるかどうかを知るには、.NETPE要件について十分に理解していません。

UPDATE2:これはおそらくあなたが探しているものの多くであり、リソースにファイルを埋め込みますが、私が言ったように、それは実際にはプロのインストーラーや自己抽出者がそれを行う方法ではありません。リソースとして埋め込むことができるものには、さまざまな制限があると思います。しかし、これはC#で記述された Self-Extractor Demo のようなものです。

9

ここで推測していますが、コンパイル前にアプリケーションにリソースを保存しようとしている場合は、プロジェクトエクスプローラーで、追加するファイルを右クリックし、プロパティを選択して、タイプを[埋め込みリソース]に変更できます。

その後、次のKBの手順を使用して、埋め込みリソースにアクセスできます。 http://support.Microsoft.com/kb/319292

4
Ray Booysen

単に複数のファイルを単一のファイルストレージに保存したい(そしてそこからファイルを抽出したり、対話したりするなど)場合は、NFileStorage、 。netファイルストレージ もチェックしてください。すべてのソースが含まれている100%.NET C#で記述されています。また、コマンドラインからの対話を可能にするコマンドラインインタープリターが付属しています。

0
Gert-Jan Bark