3

Visual Studio 2010のC#リソースにファイル(* .jpg)を追加できることを発見しました。読み取り可能な限り、実行時にexeを再アセンブルできるはずです。自分でexeファイルを削除したくありません。私は私のためにそれを行うC#ルーチンを探しています。もちろん、実行中のexeを変更するのではなく、そのコピーを変更します。実行時に再度コンパイルする必要がある場合は、exe内にソースコードを配置して使用することもできます。

私の目標:

  1. 実行中のexeファイルのコピーを作成します
  2. どういうわけかそのコピーにファイルを追加します。
  3. 実行中のアプリを閉じます
  4. ユーザーがコピーを実行するときは、ファイルをリソースとして内部に持つ必要があります。それでおしまい。

編集: C#コンパイラ+ VisualStudio2010はターゲットシステムで利用できます。


(私は完全なインストーラーをプログラミングしていません。「再発明」と「ホイール」という悪い言葉を言わないでください。私はそれらを自分で知っています)

4

1 に答える 1

1

完全なコンパイラの利点がなければ、実行可能ファイルを壊さない方法でリソース セクションを変更するのは非常に困難です。

ただし、代わりにできることは次のとおりです。

  • ZIP ファイル (またはすべてのファイルを含む他のアーカイブ) を作成します。
  • ZIP ファイルの内容を実行可能ファイルの最後にダム追加します。
  • また、アーカイブの長さを含む int32 を追加します

FileStream独自の実行可能ファイルを開いてバイトExecutableLength - ZipLength - 4を読み取ることで読み取ることができます。これによりZipLength、DotNetZip または別のライブラリを使用して読み取ることができる zip 部分のみが得られます。

次に、保存されたデータを変更する場合:

  • 実行中に既存の実行可能ファイルの名前を変更します (これは可能です)。
  • 実行可能ファイルの最初のバイトを読み取り、ExecutableLength - ZipLength - 4名前が変更される前の実行可能ファイルの名前で新しいファイルに書き込みます。
  • あなたの情報を含む新しい ZIP アーカイブを作成し、それを追加します。
  • 新しいアーカイブの長さの int32 を追加します。
  • 既存のアプリを閉じて、新しいアプリを起動します。

Tadah - 保存された独自のリソースを変更できる実行可能ファイル。

于 2013-02-08T10:21:13.633 に答える