我想用 Inno Setup 创建一个安装程序,这是我第一次使用这个工具。
\n我\xe2\x80\x99m 试图做的是用更详细的自制安装程序(意味着Setup.exe 中的Setup.exe)包装现有软件的现有安装程序。
到目前为止的研究对我有用的是要求安装程序(Inno Setup *.exe)运行包含的安装程序(实际的软件安装程序)。
\n为什么我需要另一个安装程序?因为我想给它一些额外的功能。
特别是:我想在安装结束时添加一个注册表项,作为最后一步,适合相关的位系统(32/64 位)。这就是我请求专家帮助的地方。(主要关心的问题)
\n\n我的问题详细如下:
\n\n[Registry]。但是,[Registry]似乎总是在[Run]\xe2\x80\x93 之前运行,但我需要在安装后添加密钥(添加到安装本身创建的注册表路径中),而不是之前,所以我删除了已经起作用的内容(只是以错误的顺序) 在下面[Registry]。为了在主安装后完成 reg-add ,我发现了两个过程AfterInstall和CurStepChanged/ ssPostInstall,DeinitializeSetup这似乎不太适合我的担忧(但我想AfterInstall这就是我正在寻找的(?!),因为仅此而已应该是在之后,如果之前的安装已经失败(?!),我认为它不会运行。 [Registry],但是当涉及到[Code]- 部分时,即使我现在对 Inno Setup 给定函数等做了很多研究,我也感到有点迷失。 IsWin64布尔值),现在尝试将函数(位版本查询)与过程(AfterInstall)混合起来,即使对我这样的初学者来说也是错误的。另外,我尝试创建一个 if-else-query,编译器告诉我我做错了。if IsWin64 then...有效,但添加 else 则无效。所以理论上的 …
有人可以告诉我如何在 Inno Setup Script 中获取 Pascal 代码中的 www 内容吗?
问候,
托马斯
我正在使用 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来更改操作系统中的回收站.如果用户运行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版本吗?
我目前正在尝试在卸载时进行验证.在Pascal脚本函数中,在Inno Setup中,我想搜索特定的进程,如果可能的话使用通配符.然后,遍历所有查找结果,获取图像名称和图像路径名称,以检查即将卸载的程序是否与正在运行的程序相同.
有没有办法做到这一点?
我正在尝试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) 解压缩程序我找到了我要找的东西,他应该在安装后解压缩文件。这是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)
文本错误:“提取我”的原型无效
我可以找到某个实际的订单,在卸载期间执行哪些事件和部分?例如,是否UninstallDelete会比usPostUninstall卸载步骤更早出现?
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文件永远不应该被卸载.
我怎么能这样做?
我正在使用Inno Setup(http://www.jrsoftware.org/isinfo.php)为我的JavaFX应用程序创建本机包.
我想创建一个自定义步骤,询问用户是否需要"按用户"或"每台机器"安装,以便允许非特权用户和管理员安装软件.
Inno Setup可以实现这一点吗?如果是,你可以提供跟踪的痕迹吗?
看一下这个截图
inno-setup ×10
pascalscript ×10
windows ×2
hardlink ×1
installation ×1
installer ×1
javafx ×1
registry ×1
tasklist ×1