【问题标题】:Adding a "print agreement" button to the licence page in Inno Setup在 Inno Setup 的许可页面中添加“打印协议”按钮
【发布时间】:2011-12-22 17:21:10
【问题描述】:

我需要帮助才能在 Inno 设置表单上放置一个按钮(打印协议)以通过打印机打印 EULA。

在安装过程中,当用户协议页面出现时,有 3 个按钮(返回、下一步和取消)。我想再添加一个按钮打印,以便用户可以打印 EULA 文档。有什么办法吗?

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    这是我编写的一个简单脚本,它在许可证屏幕上显示一个打印按钮,然后打开记事本,其中包含可以打印的许可证文件。

    ShellExec 可以更改为“打印”动词(显示在代码中但已注释掉),以便它可以自动打印到默认打印机。不过,这并没有考虑到没有安装打印机的系统。代码是:

    ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
    
    #define MyAppName "My Program"
    #define MyAppVersion "1.5"
    #define MyAppPublisher "My Company, Inc."
    #define MyAppURL "http://www.example.com/"
    #define MyAppExeName "MyProg.exe"
    
    [Setup]
    ; NOTE: The value of AppId uniquely identifies this application.
    ; Do not use the same AppId value in installers for other applications.
    ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
    AppId={{19ECF086-08A1-4A60-891F-E4D57E1266CF}
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    AppPublisher={#MyAppPublisher}
    AppPublisherURL={#MyAppURL}
    AppSupportURL={#MyAppURL}
    AppUpdatesURL={#MyAppURL}
    DefaultDirName={pf}\{#MyAppName}
    DefaultGroupName={#MyAppName}
    OutputBaseFilename=setup
    Compression=lzma
    SolidCompression=yes   
    LicenseFile=c:\license.txt
    
    [Languages]
    Name: "english"; MessagesFile: "compiler:Default.isl"
    
    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
    
    [Files]
    Source: "C:\util\innosetup\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
    Source: "c:\license.txt"; DestDir: "{tmp}"; Flags: dontcopy
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
    
    [Icons]
    Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
    Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
    
    
    [Run]
    Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent
    
    [code]
    var PrintButton: TButton;
    
    procedure PrintButtonClick(Sender: TObject);
    var ResultCode :integer;
    begin
    log('test');
    ExtractTemporaryFile('license.txt');
    //if not ShellExec('Print', ExpandConstant('{tmp}\license.txt'),
    //     '', '', SW_SHOW, ewNoWait, ResultCode) then
    if not ShellExec('', ExpandConstant('{tmp}\license.txt'),
         '', '', 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;
    

    【讨论】:

    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多