添加到我的EXE文件,我創建了管理嵌入式數據庫怎樣文件數據在運行時在Delphi
我的客戶希望該應用程序是在一個文件中
我的任務是修改應用程序可執行文件運行時,我的應用程序,它可以從EXE,如果再次在運行時編譯時
添加到我的EXE文件,我創建了管理嵌入式數據庫怎樣文件數據在運行時在Delphi
我的客戶希望該應用程序是在一個文件中
我的任務是修改應用程序可執行文件運行時,我的應用程序,它可以從EXE,如果再次在運行時編譯時
一個可執行文件中提取數據庫文件,對其進行編輯,包括不是不能修改。這意味着爲了實現您的目標,您需要另一個流程。你可以做到以下幾點:
坦率地說,這是一個非常可怕的想法。甚至不要嘗試這個。複雜性沒有用處,並且整個概念感覺脆弱。
請從程序分開的文件中的數據,作爲自然意圖。
我可以理解爲什麼客戶會想要這樣做:複製單個文件而不是複製文件+數據只是更容易。但你是對的:以這種方式實施它是一個可怕的想法。也許不同的方法會更好:創建可執行文件的副本並啓動該可執行文件,將其傳遞給原始文件的文件名並終止。該副本然後將原始文件用作數據文件。這可以擺脫一些糟糕。 – dummzeuch
當然,這是一個壞主意,只是覺得有什麼virusscanners要想到這個辦法的。此外如果exe崩潰會發生什麼,您的數據庫現在會失去所有的更新?
您可以在應用程序中創建包含所需的所有文件自解壓壓縮文件。
它的工作方式如下(步驟與上面的@David相同,只是列出的組件完成大部分工作)。
提取自解壓zip。
這包含:
:真正的exe文件,以在提取
數據庫
重新創建新的自解壓exe
在關閉該程序會創建一個新的壓縮文件,其中包括需要一些文件來啓動本身(只讀形式) 數據庫 重新創建新的自解壓exe
然後它會轉換壓縮文件到一個新的自解壓exe需要一些文件
新的自解壓存檔將按照#1啓動包含在其嵌入的zip文件中的exe文件。
這是sfx-zip-delphi的一些示例代碼。
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.
爲自解壓的exe
解決方案付費
如果你想有一個支付解決方案:http://www.componentace.com/sfx-zip-delphi.htm
免費
或自由:http://tpabbrevia.sourceforge.net/Self-Extracting_Archives
的abbrevia文檔的自解壓文件在這裏:https://sourceforge.net/projects/tpabbrevia/postdownload?source=dlp
請參閱第293頁。
我喜歡你在這個盒子外面的想法。一個解決方案,考慮到客戶(我會建議)的要求,但應該與當前的系統工作。 –
你是說你想使用你的EXE讀/寫存儲? –
爲什麼你沒有exe創建自解壓文件?你需要在檔案中有更多新的東西,但是編碼會更容易。 – Johan