2011-12-22 35 views
2

Inno Setupフォームにボタン(印刷契約)を入れて、プリンタ経由でEULAを印刷する際に助けが必要です。Inno Setupのライセンスページに「print agreement」ボタンを追加

ユーザーアグリーメントのページが表示されているときに、[戻る]、[次へ]、[キャンセル]の3つのボタンがあります。もう1つのボタンを追加して、ユーザーがEULA文書を印刷できるようにします。それを行う方法はありますか?

答えて

2

ここでは、ライセンス画面に[印刷]ボタンが表示され、印刷可能なライセンスファイルでメモ帳が開きます。
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; 
+0

「CurPageChanged」の実装は私の目を傷つけています!代わりに 'PrintButton.Visible:= CurPage = wpLicense;'を実行してください! –

+0

ええ、私は別のページでいくつかのことをした大きなスクリプトからそれを取り除きました。私は今それを修正しました。 – mirtheil

+0

ありがとうmirtheil ...ありがとう。スクリプトを読んだ後はとても簡単です。 :) – mchicago

関連する問題