gpt4 book ai didi

java - Inno 安装程序 : How to install a file after install?

转载 作者:行者123 更新时间:2023-11-30 08:26:51 25 4
gpt4 key购买 nike

我有一个奇怪的问题。在我的 Inno 安装脚本中,我必须检查 JRE。如果未安装最小 JRE,则会触发捆绑 JRE 的安装程序。此检查是在我的程序文件已安装到其目标位置后进行的。

但是我有 3 个文件必须放在 JRE 文件夹中。所以发生的事情是,在安装捆绑的 JRE 后,只有 1 个文件被“神奇地”删除。

我的意思是:

win32com.dll          -> {pf}/Java/jre7/bin
comm.jar -> {pf}/Java/jre7/lib/ext
javax.comm.properties -> {pf}/Java/jre7/lib

安装JRE后,win32com.dll和comm.jar都有了,但是javax.comm.properties没有

因此,为了防止这种情况,我想在安装 JRE 之后安装该文件。有可能吗?或者有什么建议?

我脚本的相关部分:

[Run]  
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{app}\jre-7u45-windows-i586.exe"; WorkingDir: {app}; StatusMsg: Checking Java Runtime Environment... Please Wait...;Check:JREVerifyInstall

[Code]
#define MinJRE "1.7"

Function JREVerifyInstall:Boolean;
var
JREVersion: string;
begin
if (RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\JavaSoft\Java Runtime Environment','CurrentVersion')) then
begin
Result := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\JavaSoft\Java Runtime Environment', 'CurrentVersion', JREVersion);
if Result then
Result := CompareStr(JREVersion, '{#MinJRE}') <> 0;
end
else
Result := true;

end;

最佳答案

[Files] 部分给你一个“dontcopy”标志,这意味着你可以打包你的文件,但只要你想从 [Code] 部分复制它们(或运行它们或其他)。像这样:

[Files]
Source: "a.txt"; Flags: dontcopy

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then begin
//This will actually extract your file to setup's temporary directory.
//If you don't do this, the file is skipped
//The temporary directory is deleted after setup ends.
ExtractTemporaryFile('a.txt');

FileCopy(ExpandConstant('{tmp}\a.txt'), 'c:\temp\a.txt', False);
end;
end;

使用“安装后”阶段提取文件并将它们复制到 JRE 文件夹。

关于java - Inno 安装程序 : How to install a file after install?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21221396/

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