标签: pascalscript

在 Inno Setup 安装结束时写入 32/64 位特定注册表项

我想用 Inno Setup 创建一个安装程序,这是我第一次使用这个工具。
\n我\xe2\x80\x99m 试图做的是用更详细的自制安装程序(意味着Setup.exe 中的Setup.exe)包装现有软件的现有安装程序。

\n\n

到目前为止的研究对我有用的是要求安装程序(Inno Setup *.exe)运行包含的安装程序(实际的软件安装程序)。
\n为什么我需要另一个安装程序?因为我想给它一些额外的功能。

\n\n

特别是:我想在安装结束时添加一个注册表项,作为最后一步,适合相关的位系统(32/64 位)。这就是我请求专家帮助的地方。(主要关心的问题)

\n\n

我的问题详细如下:

\n\n
    \n
  1. 我设法使用 Inno Setup 部分添加密钥[Registry]。但是,[Registry]似乎总是在[Run]\xe2\x80\x93 之前运行,但我需要在安装后添加密钥(添加到安装本身创建的注册表路径中),而不是之前,所以我删除了已经起作用的内容(只是以错误的顺序) 在下面[Registry]。为了在主安装后完成 reg-add ,我发现了两个过程AfterInstallCurStepChanged/ ssPostInstallDeinitializeSetup这似乎不太适合我的担忧(但我想AfterInstall这就是我正在寻找的(?!),因为仅此而已应该是在之后,如果之前的安装已经失败(?!),我认为它不会运行。
  2. \n
  3. 我不知道在现有路径下添加注册表项(字符串)的 Pascal 语法。我可以将其添加到 下[Registry],但是当涉及到[Code]- 部分时,即使我现在对 Inno Setup 给定函数等做了很多研究,我也感到有点迷失。
  4. \n
  5. 第三个问题是注册表中的路径有所不同,具体取决于它是 32 位还是 64 位系统。所以我实际上需要一个额外的查询,在添加一个或另一个路径/键之前检查位系统(因为程序本身的安装已经根据位版本创建了路径),我找到了函数(IsWin64布尔值),现在尝试将函数(位版本查询)与过程(AfterInstall)混合起来,即使对我这样的初学者来说也是错误的。另外,我尝试创建一个 if-else-query,编译器告诉我我做错了。if IsWin64 then...有效,但添加 else 则无效。
  6. \n
\n\n

所以理论上的 …

registry installation inno-setup pascalscript

5
推荐指数
1
解决办法
4382
查看次数

在 Inno Setup 中使用 HTTP 请求获取 www/web 内容

有人可以告诉我如何在 Inno Setup Script 中获取 Pascal 代码中的 www 内容吗?

问候,
托马斯

inno-setup pascalscript

5
推荐指数
1
解决办法
3268
查看次数

Inno Setup 中自定义页面的顺序

我正在使用 Inno Setup。我想要两个自定义页面,例如:

var
 PasswordEdit: TPasswordEdit;
 UserEdit: TEdit;
 Page: TWizardPage;
 Page2: TWizardPage;
...
 Page := CreateCustomPage(wpWelcome, 'Page1', '');
 Page2 := CreateCustomPage(wpWelcome, 'Page2', '');
Run Code Online (Sandbox Code Playgroud)

而是Page2出现在面前Page。这是创建更多自定义页面的正确方法吗?

inno-setup pascalscript

5
推荐指数
1
解决办法
501
查看次数

在Inno Setup中确定Windows版本

我正在使用Inno Setup来更改操作系统中的回收站.如果用户运行Windows 7或Windows XP,我需要做一些案例.我尝试使用:

if not FileExists(winDir + '\System32\imageres.dll') then
  if not FileExists(winDir + '\System32\shell32.dll') then
    installError(3);
Run Code Online (Sandbox Code Playgroud)

但它似乎无法找到,imageres.dll或者shell32.dll即使我已经证实它们存在.我究竟做错了什么?或者我可以用另一种方式检查Windows版本吗?

windows inno-setup pascalscript

4
推荐指数
3
解决办法
2万
查看次数

Inno设置Pascal脚本来搜索运行进程

我目前正在尝试在卸载时进行验证.在Pascal脚本函数中,在Inno Setup中,我想搜索特定的进程,如果可能的话使用通配符.然后,遍历所有查找结果,获取图像名称和图像路径名称,以检查即将卸载的程序是否与正在运行的程序相同.

有没有办法做到这一点?

windows inno-setup tasklist pascalscript

4
推荐指数
1
解决办法
1878
查看次数

Inno设置MsgBox有三个按钮和三个结果

我正在尝试MsgBox使用三个按钮和三个结果创建一个,但我无法看到如何创建第三个结果?我目前有两个按钮的代码MsgBox,它完美地工作:

if ((strExistingInstallPath <> '') and (strExistingVersion = '2.5.3')) then
begin
  if SuppressibleMsgBox('Setup has detected that ' + strMyAppName + ' ' + strExistingVersion + '.' + strExistingBuild + ' is installed.' + #13#10 + #13#10 +
    'The existing version must be removed before installing or upgrading to ' + strMyAppVersion + '.' + strMyAppBuild + '.' + #13#10 + #13#10 +
    'Would you like Setup to uninstall the existing version?',
    mbConfirmation, MB_YESNO, IDYES) = IDYES …
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

4
推荐指数
1
解决办法
2683
查看次数

使用InnoUnzip安装后解压缩文件-错误“无效的原型”

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

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

在此处输入图片说明

我的代码:

[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;
Run Code Online (Sandbox Code Playgroud)

文本错误:“提取我”的原型无效

inno-setup pascalscript

4
推荐指数
1
解决办法
2336
查看次数

卸载顺序

我可以找到某个实际的订单,在卸载期间执行哪些事件和部分?例如,是否UninstallDelete会比usPostUninstall卸载步骤更早出现?

Inno Setup在手册中有"安装顺序"一文,但它看起来更像是编译顺序,而不是执行.

inno-setup pascalscript

4
推荐指数
1
解决办法
2206
查看次数

使用Inno Setup创建硬链接

我有数千个自己的安装程序,需要一个关键的dll文件进行卸载步骤,这个dll文件大小约为2 mb然后避免不必要的磁盘空间(2mb*100安装程序)我想将文件存储一次{cf}然后为之创建一个硬链接需要该文件的下一个安装程序.

我可以在Inno Setup中创建硬链接而无需使用外部应用程序,例如mklink.exe用法?

这是我所拥有的一个简短示例,我的所有安装程序都遵循相同的"结构":

[Files]
; VCL Styles
Source: {tmp}\uninstall.vsf; DestDir: {app}; Flags: ignoreversion
Source: {tmp}\uninstall.dll; DestDir: {app}; Flags: ignoreversion uninsneveruninstall

; Temp files
Source: {tmp}\*; DestDir: {tmp}; Excludes: uninstall.dll, uninstall.vsf; Flags: recursesubdirs createallsubdirs ignoreversion

; Program
Source: {app}\*; DestDir: {app}; Flags: recursesubdirs createallsubdirs ignoreversion
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在将uninstall.dll移动到{app},但我想要做的是:如果不存在,请将uninstall.dll文件复制到{cf}\InnoSetup\uninstall.dllfilepath并创建一个硬链接{app}\uninstall.dll,如果已经存在则该文件然后只是制作硬链接,仅此而已,我不会仍然存储uninstall.dll文件{app}\uninstall.dll,只是我想要一个符号引用因为uninstall.dll文件永远不应该被卸载.

我怎么能这样做?

installer inno-setup hardlink pascalscript

4
推荐指数
1
解决办法
887
查看次数

每个用户或每台机器安装的Inno Setup自定义对话框

我正在使用Inno Setup(http://www.jrsoftware.org/isinfo.php)为我的JavaFX应用程序创建本机包.

我想创建一个自定义步骤,询问用户是否需要"按用户"或"每台机器"安装,以便允许非特权用户和管理员安装软件.

Inno Setup可以实现这一点吗?如果是,你可以提供跟踪的痕迹吗?

看一下这个截图

在此输入图像描述

javafx inno-setup pascalscript

4
推荐指数
1
解决办法
1156
查看次数