gpt4 book ai didi

inno-setup - 使用 InnoUnzip 安装后解压缩文件 - 错误 "Invalid prototype"

转载 作者:行者123 更新时间:2023-12-04 01:55:20 25 4
gpt4 key购买 nike

unpacker 我找到了我要找的东西,他应该在安装后解压文件
这是InnoUnzip.ZIP

我的安装程序文件夹如下所示:

enter image description here

我的代码:

[Setup]
AppName=My Program
AppVersion=1.0
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes
UninstallDisplayIcon={app}\MyProg.exe
OutputDir=userdocs:Inno Setup Examples Output

[Files]
Source: "unzipper.dll"; Flags: dontcopy
Source: "MyProg.exe"; DestDir: "{app}"
Source: "Somefile.zip"; DestDir: "{app}"; AfterInstall: ExtractMe('{app}\Somefile.zip', '{app}');

[Icons]
Name: "{commonprograms}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"

[Code]
procedure unzip(src, target: AnsiString);
external 'unzip@files:unzipper.dll stdcall delayload';

procedure ExtractMe(src, target : AnsiString); - ERROR HERE!!!!!
begin
unzip(ExpandConstant(src), ExpandConstant(target));
end;

文字错误: “Extract Me”的原型(prototype)无效

最佳答案

跟进 TLama 关于 DLL 冗余的观点:只需编码 UnZip() 即可达到相同的效果直接在 Inno Setup 脚本中。

const
SHCONTCH_NOPROGRESSBOX = 4;
SHCONTCH_RESPONDYESTOALL = 16;

procedure Unzip(ZipFile, TargetFolder: String);
var
ShellObj, SrcFile, DestFolder: Variant;
begin
ShellObj := CreateOleObject('Shell.Application');
SrcFile := ShellObj.NameSpace(ZipFile);
DestFolder := ShellObj.NameSpace(TargetFolder);
DestFolder.CopyHere(SrcFile.Items, SHCONTCH_NOPROGRESSBOX or SHCONTCH_RESPONDYESTOALL)
end;

procedure ExtractMe(src, target : String);
begin
// Add extra application code here, then:
Unzip(ExpandConstant(src), ExpandConstant(target));
end;

Inno Setup 脚本代码或多或少与 DLL 的相同……只是短了一点。

请注意,如果 Zip 或 Destination 文件夹不存在, NameSpace()方法调用返回 Null , CopyHere()失败,用户会看到一个粗鲁而令人费解的对话框 - 所以最好在打电话之前检查一下。

关于inno-setup - 使用 InnoUnzip 安装后解压缩文件 - 错误 "Invalid prototype",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29469657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com