将打印按钮添加到 Inno Setup 中的许可证页面(Inno Setup 6 重新访问)

2023-12-13

这是一个标准 RTF 文档,用于LicenseFile财产在[Setup]Inno 设置部分:

enter image description here

是否可以在此页面添加一个打印按钮来触发打印许可协议?


我看到了类似的问题和答案(在 Inno Setup 的许可页面中添加“打印协议”按钮)我刚刚尝试实施。但这就是我得到的:

enter image description here

该按钮位于错误的位置,因此此代码似乎与 Inno Setup 6 不完全兼容?

所以,在我的脚本中我有:

[Setup]
LicenseFile=..\..\..\EULA\EULA.rtf

[Code]
var PrintButton: TButton;

procedure PrintButtonClick(Sender: TObject);
var ResultCode :integer;
begin
    log('test');
    ExtractTemporaryFile('EULA.rtf');
    //if not ShellExec('Print', ExpandConstant('{tmp}\EULA.rtf'),
    //     '', '', SW_SHOW, ewNoWait, ResultCode) then
    if not ShellExec('', ExpandConstant('{tmp}\EULA.rtf'),
         '', '', SW_SHOW, ewNoWait, ResultCode) then
    log('test');
end;

procedure InitializeWizard();
begin
    PrintButton := TButton.Create(WizardForm);
    PrintButton.Caption := '&Print...';
    PrintButton.Left := WizardForm.InfoAfterPage.Left + 96;
    PrintButton.Top := WizardForm.InfoAfterPage.Height + 88;
    PrintButton.OnClick := @PrintButtonClick;
    PrintButton.Parent := WizardForm.NextButton.Parent;
end;

procedure CurPageChanged(CurPage: Integer);
begin
    PrintButton.Visible := CurPage = wpLicense;
end;

我也不清楚哪个代码是正确的“打印”此协议。


这并不是关于 Inno Setup 6,而是关于WizardStyle=modern.

  1. 如果要将控件放置在页面底部,请使用相对于向导大小的坐标,而不是绝对坐标。或者更好的是,使用相对于您想要对齐的控件的坐标。该代码显然想要对齐Print按钮与其他按钮如Next, so do:

    PrintButton.Top := WizardForm.NextButton.Top;
    
  2. 您正在使用WizardStyle=modern,比经典向导更大。当时的InitializeWizard所谓,现代风格尚未应用。所以即使是Next按钮未位于其最终位置。为了满足这一点,请使用akBottom锚(如NextButton does):

    PrintButton.Anchors := [akLeft, akBottom];
    

    这也是必须的,因为现代向导是用户可调整大小的,因此您需要将按钮粘在底部,即使向导大小稍后发生变化。

    也可以看看将自定义按钮与 Inno Setup 取消按钮对齐

  3. 将按钮相对于WizardForm.InfoAfterPage.Left这是无稽之谈,因为这总是0。您可能想使用:

    PrintButton.Left :=
      WizardForm.OuterNotebook.Left + WizardForm.InnerNotebook.Left;
    
  4. 不要依赖默认大小,默认大小不会缩放:

    enter image description here

    您可以使用要对齐的其他控件的大小:

    PrintButton.Width := WizardForm.NextButton.Width;
    PrintButton.Height := WizardForm.NextButton.Height;
    
  5. 始终缩放偏移量和尺寸ScaleX and ScaleY. See 将图像/控件放置在 Inno Setup 自定义页面上。但如果您应用上述所有内容,您将不会留下任何固定的坐标或尺寸。

现在,无论您使用什么风格的 Inno Setup 向导,或者您的安装程序将在什么 DPI 上运行,您的代码都可以正常工作。

enter image description here

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将打印按钮添加到 Inno Setup 中的许可证页面(Inno Setup 6 重新访问) 的相关文章

  • 使用 Inno Setup 添加卸载信息

    我正在使用 Inno Setup 为我的程序创建安装程序 但我希望能够添加图标并更改控制面板 添加 删除程序 中显示的一些信息 我知道 Inno Setup 添加了一个注册表项来获取首先列出的程序 所以我想知道是否可以以任何方式扩展它 以便
  • 命令行开关阻止 Inno Setup 安装程序创建桌面图标

    我正在尝试为 Balsamiq Mockups 创建静默安装 该安装似乎是使用 Inno Setup 编译器创建的 作为标准静默安装的一部分 它会创建一个我希望阻止的桌面快捷方式 有谁知道相关的命令行开关来防止创建桌面图标 我尝试过使用 M
  • Inno Setup - 如何本地化组件和类型名称?

    如何本地化组件和类型名称 例如 Languages Name eng MessagesFile Idiomas English isl Name spa MessagesFile Idiomas Spanish isl 如果我选择英语 Ty
  • 使用 Inno Setup 安装时应用程序无法运行

    我正在开发桌面数据库应用程序 使用rdlc报告和reportviewer 开发过程中一切顺利 reportviewer 可以顺利显示所有数据 我使用 Inno Setup 部署应用程序 但是当我安装该应用程序时 报告查看器不显示数据 当数据
  • Inno Setup 查找子文件夹

    是否有办法获取目录中的所有 或仅第一个 子文件夹 我正在尝试将文件安装到具有动态名称的子目录中 它不是 Inno Setup 可用的常量之一 有办法找到这个子目录名吗 那么 要获取某个文件夹中第一个找到的子文件夹的名称 无论它是哪个 您可以
  • 在自定义布局页面上选择图像文件并将文件复制到安装文件夹

    我的目标是让用户使用此安装程序 插入您的姓名 选择您的语言并设置自定义参数 这样就完成了 但我需要的是用户选择一个图像将其作为应用程序中的头像 这就是用户选择图像然后将文件复制到应用程序文件夹的原因 像这样的事情 这是我的代码 如果有人可以
  • 根据用户输入更改 AppID 和 AppName

    我想在同一系统上多次安装同一应用程序 例如两个用户使用两个不同的 Web 服务 每个都有自己的 在我的设置脚本中我想更改AppID and AppName基于用户的输入 例如我的默认值AppName Service App 应该改为AppN
  • 无法为 32 位 HKLM 设置注册表插入

    我想在 Inno setup 中创建一个带有子菜单项的上下文菜单 问题是 它在 64 位注册表 WoW6432Node 部分插入 HKLM 密钥 The 文档 http www jrsoftware org ishelp index php
  • 安装程序启动时间长 - 在 wpWelcome 之前添加对话框?

    我使用 Inno Setup 创建的安装程序大小约为 850 MB 包含约 7000 个文件和 890 个文件夹 未压缩大小为 1 98 GB 当开始安装过程时 之后Windows UAC 对话框出现后 安装程序的图标为空Taskbar约
  • 在已安装应用程序的情况下运行 inno setup 时卸载

    我刚刚开始使用 inno setup 看起来效果很好 但是 当我运行已安装的应用程序的安装程序时 它会重新安装 我想给用户卸载 这可能吗 如果可以 该怎么做 具体来说 我为家庭作业编写了一个游戏 我使用 inno setup 制作了一个安装
  • 如何在 Inno Setup 中使用 GetVolumeInformation?

    我需要在使用 Inno Setup 创建的安装过程中获取驱动器号的卷序列号 我知道 DLL 函数可以导入到 Inno 中 但我对它还很陌生 并且在使其工作时遇到一些问题 我知道 kernel32 中的 GetVolumeInformatio
  • 安装日志文件丢失

    我制作了一个脚本 其中包括 Setup SetupLogging yes 但我找不到日志文件 好像没有被创建 它可能在哪里 可以指定我想放置它的位置吗 您可以通过设置指定日志文件的路径命令行参数 所以要记录例如到C FileName log
  • Inno Setup 选择一个目录来安装预定义集中的文件

    在这种情况下 我需要将文件安装到特定目录 但在不同的计算机上它可能位于不同的文件夹中 所以我需要检查哪个是正确的 例如 我有一个文件 需要将其安装在A文件夹或B文件夹或C文件夹 取决于计算机有A or B or C 所以我需要先检查一下计算
  • 在 Inno Setup 中获取 MAC 地址

    我尝试使用下面的代码来获取 Inno Setup 中的 mac 地址 但出现错误 内部错误 ExtractTemporaryFile 找不到文件 ISID dll 我已经复制了ISID dll在应用程序文件夹中仍然出现上述错误 如果我遗漏了
  • 使用 inno setup 安装时检查可用端口

    我正在尝试在 inno setup 中创建以下功能 用户被要求输入他们希望我的应用程序进行通信的端口 一旦他们进入端口 他们就可以点击检查按钮 此检查按钮将运行一些代码来查看安装计算机上的端口是否可用 到目前为止 我可以为用户创建输入框来输
  • 如何在 Inno Setup 中为控件卷出设置动画

    我想在我的安装程序中制作控件滚动的动画 你可以看这个视频 https drive google com file d 1H0HKTPXg9BdYD4HQWqCWHlGSTIHlcJa view 您可以使用计时器来为控件设置动画 Code f
  • 如何使用 Inno Setup 在安装过程中检查端口是否可用?

    我正在尝试创建一个安装文件 以便在安装过程中它将检查端口 例如 9000 并让用户知道端口状态 我是 Inno Setup 的新手 想知道这是否可行 以及如何检查这一点 谢谢 您可以使用我的功能来检查端口是否可用 see function
  • 从 Inno Setup 项目内部调用 MySQL

    我正在为一些使用 MySQL 的软件编写安装程序 我正在尝试运行 sql用于在安装时设置数据库的脚本 唉 我目前在执行它时遇到了很大的问题 这个问题似乎是由于这样一个事实而产生的 当你设置一条通往 sql文件内的 execute SOURC
  • 欢迎页面未显示,SelectDir 页面首先显示

    我正在尝试使用 Inno Setup 来制作安装程序 我想先显示欢迎页面 然后显示 SelectDir This is CurPageChanged示例代码 procedure CurPageChanged CurPageID intege
  • Inno Setup - 如何在安装过程中读取 INF 文件

    我需要知道如何在安装过程中从 INF 文件 inf 读取值 我希望安装程序检查我要更新的程序的版本 该程序版本不存储在注册表或任何其他文件中 仅存储在 inf 文件中 然后必须从中获取版本 我得到了你的答案 Trama 我无法使用 DLL

随机推荐

  • 在虚拟机上自动进行测试,无需图形会话

    语境 我在 Windows 上运行并使用 UFT Ranorex 在虚拟机 很少 上执行自动化 GUI 测试 执行由 Jenkins 进行试点 Problem VM 必须有一个活动的graphic会话 否则 UFT 将不会运行 GUI 测试
  • 在 flutter 中构建应用程序 2 次后构建失败

    在 VS code 中构建我的 flutter 应用程序后 我成功运行了该应用程序 一切正常 但在应用程序重新启动两次或多次后 每当我再次运行代码时 构建都会失败 这是弹出的错误 Target debug android applicati
  • iOS swift NumberFormatter 十进制样式本地化

    我正在与NumberFormatter Style decimal我需要 20000 23 应该是 20 000 23 因为我创建了一个扩展 var NumerWithDecimalPoint String if self let numb
  • mysql 中的 GROUP BY 特性 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有以下 SQL 表和查询 如 sqlfiddle 中所示 http sqlfiddle com 2 37eda 1 0 当前结果如下所示 id definition id serv
  • 列出 Windows 中打开文件句柄的所有者进程?

    我目前在程序的事件查看器中收到 句柄不足 错误 列出哪些进程正在使用文件句柄的好程序是什么 一个例子是 nix 世界中的 lsof 使用流程浏览器 http technet microsoft com en us sysinternals
  • 在 CIFilter 中使用 CIColor 中的 CIImage:获取空图像

    我正在尝试创建一个具有混合模式 如叠加或乘法 的 CIFilter 相关代码 Let s try a filter here Get the data NSData imageData UIImageJPEGRepresentation i
  • 从周数查找一周的开始结束日期

    我使用 servlet 和 JSP 构建了一个 Web 应用程序 并在 Servlet 内计算了周数 private int findWeekNumber String myDate throws ParseException Simple
  • Auto Div 高度取决于另一高度

    我有以下情况我希望 Div2 高度根据 Div3 的内容调整大小 我怎样才能做到这一点 DIV1 DIV2 DIV3
  • Chrome 扩展程序可从脚本中提取文本

    我正在尝试使用 Chrome 扩展的 JS 从脚本标记中提取 webId 22 22 var 字符串 我当前正在使用的示例允许我提取页面标题 payload js chrome runtime sendMessage document ti
  • 根据另一个数据框更改数据框的值

    我再次需要您的帮助来解决一个对于初学者 R 用户来说不太清楚的可能简单的问题 我需要操作一个数据框来替换NA值由 现实 的值来满足另一个应用程序 数据帧包含 3 0 的值 这是原始数据库中无效值的标志 我需要的是用来自另一个数据帧的数据替换
  • 如何在 Touch UI 中添加强制下拉字段

    我将 必需 添加为 真实 但它不起作用 required 为 true 仅适用于文本字段 根据下面的文档 我没有看到任何从下拉列表中添加必填字段的选项 http docs adobe com docs en aem 6 0 author a
  • 为什么 Promise.then 'onFulfilled' 函数在 setTimeout 回调之前触发? [复制]

    这个问题在这里已经有答案了 有人可以解释为什么 Promise then 函数在 setTimeout 函数之前触发吗 我本以为 setTimeout 函数会首先安排在事件循环上 所以它会在 Promise then 函数之前运行 setT
  • 运算符如何重载|专门实现了 C++ 范围适配器?

    自从范围被合并到 C 20 中以来 我一直在查看标题以了解如何operator 对于范围视图来说超载 但我找不到关于如何或在何处实现它的正确轨道 C R 相当于R C根据https en cppreference com w cpp ran
  • Makefile - 移动目标文件

    经过一番搜索后 我成功地将以下 Makefile 放在一起 CC gcc CFLAGS c Wall LDFLAGS SOURCEFILES main c SOURCES src SOURCEFILES OBJECTS SOURCES c
  • Codeigniter 2.1.3 的 SMTP Gmail 错误

    我看过很多与此问题相关的帖子 我已经完成了给出的说明 但总是遇到相同的错误 我想使用 Code Igniter 2 1 3 发送 smtp gmail 这是代码 class Email extends CI Controller funct
  • 使用 SSIS 压缩文件夹

    我正在尝试压缩 SSIS 中的一个文件夹 源文件夹中有 12 个文件 我需要压缩该文件夹 我可以很好地压缩文件 我的问题是文件夹 我必须使用 winzip 来创建压缩包 谁能给我指点一个好的教程 我无法实现我找到的任何示例 Thanks 添
  • 将字典拆分为 df 中的各个列[重复]

    这个问题在这里已经有答案了 我有以下内容df其值是字典 tests SO4 Mon 6 Tues 6 Wed 7 CH3 Mon 0 Tues 8 Wed 10 我想获得所需的输出 0 1 2 SO4 Mon 6 Tues 6 Wed 7
  • Android:如何根据首先选择的单选按钮启用/禁用复选框

    基本上我有一个带有两个单选按钮的单选组 其中一个标记为 运行 另一个标记为 通过 就在其下方 我还有一个标记为 通过完成 的复选框 问题 如何在选择 运行 单选按钮时禁用该复选框 因此无法选择该复选框 并在选择 通过 单选按钮时启用它 任何
  • 无法将数组项传递给 PhantomJS 中的函数

    我正在尝试将源代码同时提取到多个网页 这些链接通过源文本文件输入到数组中 我能够迭代数组并打印出链接并确认它们存在 但是当尝试通过函数传递它们时 它们在第一次迭代后变得未定义 我的最终目标是将每个页面的源代码保存到自己的文档中 它正确执行第
  • 将打印按钮添加到 Inno Setup 中的许可证页面(Inno Setup 6 重新访问)

    这是一个标准 RTF 文档 用于LicenseFile财产在 Setup Inno 设置部分 是否可以在此页面添加一个打印按钮来触发打印许可协议 我看到了类似的问题和答案 在 Inno Setup 的许可页面中添加 打印协议 按钮 我刚刚尝