で、実行時に私のEXEファイルにファイルのデータを追加するにはどうすればよい私は組み込みデータベース私はデルファイ
私の顧客を管理するアプリケーションを作成したマイタスクを変更することで、このアプリケーションを1つのファイルに
になりたいです私のアプリケーションは、exeからデータベースファイルを抽出して編集し、実行時にコンパイル時ではないときに再度インクルードすることができます。
で、実行時に私のEXEファイルにファイルのデータを追加するにはどうすればよい私は組み込みデータベース私はデルファイ
私の顧客を管理するアプリケーションを作成したマイタスクを変更することで、このアプリケーションを1つのファイルに
になりたいです私のアプリケーションは、exeからデータベースファイルを抽出して編集し、実行時にコンパイル時ではないときに再度インクルードすることができます。
実行可能ファイルの実行中に実行ファイルを変更することはできません。つまり、目標を達成するためには別のプロセスが必要です。次の操作を実行できます。
これはまったくひどい考えです。これも試してはいけません。複雑さは役に立たない目的ではなく、全体のコンセプトは脆いと感じます。
データをプログラムとは別のファイルに保存してください。
ファイルとデータをコピーするのではなく、単一のファイルをコピーするほうが簡単です。しかし、あなたは正しいです:それをそのように実装するのはひどい考えです。おそらく、別のアプローチが良いでしょう:実行可能ファイルのコピーを作成し、それを開始し、元のファイルのファイル名を渡して終了します。そのコピーは元のファイルをデータファイルとして使用します。これはいくつかの不毛を取り除く。 – dummzeuch
これはもちろん、悪い考えで、ウイルススキャナがこのアプローチを考えていると思います。 exeがクラッシュした場合にも何が起こるのですか?あなたのdbはすべてのアップデートを失いますか?
exeが必要なすべてのファイルを含む自己解凍形式のアーカイブを作成できます。
これは以下のように機能します(手順は、上記の@Davidと同じですが、リストされたコンポーネントがほとんどの作業を行います)。
抽出自己抽出ジップ。
これは含まれています:エキス
時に開始する実際のexeファイルをデータベース
含めて、それが新しいzipファイルを作成するプログラムを閉じると、新しい自己解凍exeファイル
を再作成するために必要ないくつかのファイル、:
を自身(読み取り専用形式で) データベース それは、新しい自己解凍exeファイルへのzipファイルを変換されます
新しい自己解凍exeファイルを再作成するために必要ないくつかのファイル
新しい自己解凍形式のアーカイブは、#1のように埋め込まれたzipファイルに含まれているexeを起動します。
ここにsfx-zip-delphiのサンプルコードを示します。
またはフリーhttp://www.componentace.com/sfx-zip-delphi.htm
無料:http://tpabbrevia.sourceforge.net/Self-Extracting_Archives
ためabbreviaドキュメント自己解凍exeファイルのあなたが支払った解決策が必要な場合
を有料
ため
program SelfExtractingZip;
{$APPTYPE CONSOLE}
uses
// Add a ZipForge unit to the program
SysUtils, ZipForge, Classes;
var
archiver : TZipForge;
begin
// Create an instance of the TZipForge class
archiver := TZipForge.Create(nil);
try
with archiver do
begin
// Set the name of the archive file we want to create.
// We set extension to exe because we create a SFX archive
FileName := 'C:\test.exe';
// See SFXStub demo in ZipForge\Demos\Delphi folder
// to learn how to create a SFX stub
SFXStub := 'C:\SFXStub.exe';
// Because we create a new archive,
// we set Mode to fmCreate
OpenArchive(fmCreate);
// Set base (default) directory for all archive operations
BaseDir := 'C:\';
// Add the C:\test.txt file to the archive
AddFiles('c:\test.txt');
CloseArchive();
end;
except
on E: Exception do
begin
Writeln('Exception: ', E.Message);
// Wait for the key to be pressed
Readln;
end;
end;
end.
ソリューション自己解凍ファイルはここにあります:https://sourceforge.net/projects/tpabbrevia/postdownload?source=dlp
293ページを参照してください。
私はこの箱の外であなたの考え方を好きです。顧客(私はアドバイスされます)の要件を考慮に入れるが、現在のシステムで動作するソリューション。 –
あなたはEXEを読み書き用に使用したいと言っていますか? –
exeで自己解凍形式のアーカイブを作成してみませんか?アーカイブにはもっと多くのものが必要ですが、コードを書く方が簡単です。 – Johan