在 Inno Setup InitializeSetup 期间从安装程序中提取同名文件
Extracting files with same name from installer during Inno Setup InitializeSetup
这是我的文件部分
Source: "Deployment\x64\SQLite.Interop.dll"; DestDir: "{app}\x64"
Source: "Deployment\x64\System.Data.SQLite.dll"; DestDir: "{app}\x64"
Source: "Deployment\x64\System.Data.SQLite.Linq.dll"; DestDir: "{app}\x64"
Source: "Deployment\x86\SQLite.Interop.dll"; DestDir: "{app}\x86"; DestName
Source: "Deployment\x86\System.Data.SQLite.dll"; DestDir: "{app}\x86"
Source: "Deployment\x86\System.Data.SQLite.Linq.dll"; DestDir: "{app}\x86"
在 Inno Setup 的第一个 window 出现后,我需要一个检查列表。为此我调用了这个函数
function RunCheckListApp(): Boolean;
var
resultCode: Integer;
source: string;
destination: string;
begin
ExtractTemporaryFile('Insync.eConnect.InstallerPreRequisiteCheck.exe');
ExtractTemporaryFile('APPSeConnect.Communications.dll');
ExtractTemporaryFile('InSync.eConnect.APPSeCONNECT.dll');
ExtractTemporaryFile('Microsoft.AspNet.SignalR.Client.dll');
ExtractTemporaryFile('Newtonsoft.Json.dll');
ExtractTemporaryFile('System.Data.SQLite.dll');
ExtractTemporaryFile('System.Data.SQLite.dll');
ExtractTemporaryFile('InSync.eConnect.NLogModule.dll');
destination:=ExpandConstant('{tmp}\Adapters');
CreateDir(destination);
destination:=ExpandConstant('{tmp}\x86');
CreateDir(destination);
destination:=ExpandConstant('{tmp}\x64');
CreateDir(destination);
ExtractTemporaryFiles('{tmp}\x86\SQLite.Interop.dll');
destination := ExpandConstant('{tmp}\Adapters\InSync.eConnect.NLogModule.dll')
source := ExpandConstant('{tmp}\InSync.eConnect.NLogModule.dll');
FileCopy(source, destination, False);
DeleteFile(source);
Exec(ExpandConstant('{tmp}\Insync.eConnect.InstallerPreRequisiteCheck.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, resultCode);
if resultCode > 0
then begin
Result:= true;
end
else
begin
Result:= false;
end;
end;
在 InitializeSetup
函数中。
我正在尝试的应用 运行 需要相应文件夹中的 DLL 才能正常运行。
Deployment\x64\SQLite.Interop.dll
到 {app}\x64
Deployment\x86\SQLite.Interop.dll
至 {app}\x86
这些是复制的文件。
现在应用 Insync.eConnect.InstallerPreRequisiteCheck.exe
需要相同文件夹中的相同 DLL 才能工作。
我正在尝试将那些具有相同名称并具有相同结构的 DLL 提取到临时文件夹。
ExtractTemporaryFiles
采用 DestDir
参数指定的完整路径(具有未扩展的常量)。它仍然提取到 {tmp}
.
ExtractTemporaryFiles('{app}\x86\SQLite.Interop.dll');
相关问题:
这是我的文件部分
Source: "Deployment\x64\SQLite.Interop.dll"; DestDir: "{app}\x64"
Source: "Deployment\x64\System.Data.SQLite.dll"; DestDir: "{app}\x64"
Source: "Deployment\x64\System.Data.SQLite.Linq.dll"; DestDir: "{app}\x64"
Source: "Deployment\x86\SQLite.Interop.dll"; DestDir: "{app}\x86"; DestName
Source: "Deployment\x86\System.Data.SQLite.dll"; DestDir: "{app}\x86"
Source: "Deployment\x86\System.Data.SQLite.Linq.dll"; DestDir: "{app}\x86"
在 Inno Setup 的第一个 window 出现后,我需要一个检查列表。为此我调用了这个函数
function RunCheckListApp(): Boolean;
var
resultCode: Integer;
source: string;
destination: string;
begin
ExtractTemporaryFile('Insync.eConnect.InstallerPreRequisiteCheck.exe');
ExtractTemporaryFile('APPSeConnect.Communications.dll');
ExtractTemporaryFile('InSync.eConnect.APPSeCONNECT.dll');
ExtractTemporaryFile('Microsoft.AspNet.SignalR.Client.dll');
ExtractTemporaryFile('Newtonsoft.Json.dll');
ExtractTemporaryFile('System.Data.SQLite.dll');
ExtractTemporaryFile('System.Data.SQLite.dll');
ExtractTemporaryFile('InSync.eConnect.NLogModule.dll');
destination:=ExpandConstant('{tmp}\Adapters');
CreateDir(destination);
destination:=ExpandConstant('{tmp}\x86');
CreateDir(destination);
destination:=ExpandConstant('{tmp}\x64');
CreateDir(destination);
ExtractTemporaryFiles('{tmp}\x86\SQLite.Interop.dll');
destination := ExpandConstant('{tmp}\Adapters\InSync.eConnect.NLogModule.dll')
source := ExpandConstant('{tmp}\InSync.eConnect.NLogModule.dll');
FileCopy(source, destination, False);
DeleteFile(source);
Exec(ExpandConstant('{tmp}\Insync.eConnect.InstallerPreRequisiteCheck.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, resultCode);
if resultCode > 0
then begin
Result:= true;
end
else
begin
Result:= false;
end;
end;
在 InitializeSetup
函数中。
我正在尝试的应用 运行 需要相应文件夹中的 DLL 才能正常运行。
Deployment\x64\SQLite.Interop.dll
到 {app}\x64
Deployment\x86\SQLite.Interop.dll
至 {app}\x86
这些是复制的文件。
现在应用 Insync.eConnect.InstallerPreRequisiteCheck.exe
需要相同文件夹中的相同 DLL 才能工作。
我正在尝试将那些具有相同名称并具有相同结构的 DLL 提取到临时文件夹。
ExtractTemporaryFiles
采用 DestDir
参数指定的完整路径(具有未扩展的常量)。它仍然提取到 {tmp}
.
ExtractTemporaryFiles('{app}\x86\SQLite.Interop.dll');
相关问题: