You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup 6许可协议页面添加打印按钮的兼容问题咨询

问题修复方案

你遇到的两个问题分别可以通过调整按钮坐标计算逻辑、补全文件配置和修正打印调用代码解决,以下是完整可运行的兼容Inno Setup 6的脚本:

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

[Files]
; 配置许可协议文件按需解压到临时目录
Source: "..\..\..\EULA\EULA.rtf"; Flags: dontcopy nocompression

[Code]
var PrintButton: TButton;

procedure PrintButtonClick(Sender: TObject);
var ResultCode :integer;
begin
    ExtractTemporaryFile('EULA.rtf');
    // 调用系统默认RTF程序的打印功能
    if not ShellExec('Print', ExpandConstant('{tmp}\EULA.rtf'),
         '', '', SW_SHOW, ewNoWait, ResultCode) then
    Log('打印许可协议失败');
end;

procedure InitializeWizard();
begin
    PrintButton := TButton.Create(WizardForm);
    PrintButton.Caption := '&Print...';
    // 适配Inno Setup 6布局+高DPI缩放,按钮放在返回按钮左侧,和底部按钮组对齐
    PrintButton.Left := WizardForm.BackButton.Left - PrintButton.Width - ScaleX(16);
    PrintButton.Top := WizardForm.BackButton.Top;
    PrintButton.OnClick := @PrintButtonClick;
    PrintButton.Parent := WizardForm.NextButton.Parent;
end;

procedure CurPageChanged(CurPage: Integer);
begin
    // 仅在许可协议页显示打印按钮
    PrintButton.Visible := CurPage = wpLicense;
end;

修正点说明

  • 按钮位置适配:不再使用硬编码的旧版本页面对象坐标,改为基于现有底部导航按钮的位置计算,同时使用ScaleX适配系统DPI缩放,兼容Inno Setup 6的默认布局,不会出现位置错位。
  • 补全文件配置:新增[Files]段配置许可文件的解压规则,避免ExtractTemporaryFile调用时找不到文件报错。
  • 打印功能修正:恢复ShellExec的Print动词调用,直接触发系统默认RTF关联程序的打印流程,而非单纯打开文件。

内容的提问来源于stack exchange,提问作者Andrew Truckle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:27:02