作者: Jim Wang 公众号: 巴博萨船长
摘要:Inno Setup 使用过程中,如何窗口自定义输入路径的引导页面?如何在自定义页面中添加控件和控件的事件处理函数?如何在页面中使用添加图形文件?
Abstract: How to use Inno Setup and how to create a custom input path for the window guide page? How to add controls to a custom page and event handling functions for the controls? How to use add graphics files to a page?
作者: Jim Wang 公众号: 巴博萨船长
Inno Setup 如何创建自定义的路径输入页面 实现过程 如需要创建CreateInputDirPage,需要在[Setup]字段完成如下设定:
1 2 [Setup] ArchitecturesInstallIn64BitMode = x64
如果 ArchitecturesInstallIn64BitMode 不被设定,则CreateInputDirPage页面的Caption值和默认路径值DatabaseDirPage.Values 都不会被接受。
然后修改过程InitializeWizard ,修改完代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 procedure InitializeWizard ;var Index : Integer; Offset: Integer; BitmapImage: TBitmapImage; BitmapImage2: TBitmapImage; sOldDBPath: String ; begin ExtractTemporaryFile('DatabaseIcon225x225.bmp' ); DatabaseDirPage := CreateInputDirPage(wpSelectDir, 'Page Caption' , '' , 'Page Sub Caption' , False, 'New path' ); Index := DatabaseDirPage.Add(CustomMessage('InPageEditLabel' )); sOldPath := GetOldSettingPath(); If sOldPath = '' then begin DatabaseDirPage.Values[0 ] := ExpandConstant('{commonappdata}\{#AppPath}\DB\' ); end else begin DatabaseDirPage.Values[0 ] := sOldDBPath; End ; DatabaseDirPage.Edits[Index ].Enabled := False; DatabaseDirPage.Buttons[Index ].Enabled := False; DatabaseDirPage.Buttons[0 ].OnClick := @DirBrowseButtonClick; BitmapImage2 := TBitmapImage.Create(WizardForm); with BitmapImage2 do begin Parent := DatabaseDirPage.Surface; Bitmap.LoadFromFile(ExpandConstant('{tmp}\DatabaseIcon225x225.bmp' )); AutoSize := True; AutoSize := False; Height := ScaleX(26 ); Width := ScaleY(26 ); Stretch := True; Left := ScaleX(0 ); DatabaseDirPage.SubCaptionLabel.Left := Width + ScaleX(10 ); DatabaseDirPage.SubCaptionLabel.Top := DatabaseDirPage.SubCaptionLabel.Top + Height - DatabaseDirPage.Buttons[0 ].Height; Top := WizardForm.SelectTasksPage.Top + ScaleY(0 ); DatabaseDirPage.PromptLabels[0 ].Top := DatabaseDirPage.PromptLabels[0 ].Top + ScaleY(15 ); DatabaseDirPage.Edits[0 ].Top := DatabaseDirPage.Edits[0 ].Top + ScaleY(20 ); DatabaseDirPage.Buttons[0 ].Top := DatabaseDirPage.Buttons[0 ].Top + ScaleY(20 ); end ; end ;
上述代码段中,需要介绍的是下面一行,该行主要定义了按钮点击之后的事件处理函数DirBrowseButtonClick ,使用@符号进行引用标识。
1 DatabaseDirPage.Buttons[0 ].OnClick := @DirBrowseButtonClick;
下面的代码,定义了页面中图片的位置,图片的缩放操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 BitmapImage2 := TBitmapImage.Create(WizardForm); with BitmapImage2 do begin Parent := DatabaseDirPage.Surface; Bitmap.LoadFromFile(ExpandConstant('{tmp}\DatabaseIcon225x225.bmp' )); AutoSize := True; AutoSize := False; Height := ScaleX(26 ); Width := ScaleY(26 ); Stretch := True; Left := ScaleX(0 ); DatabaseDirPage.SubCaptionLabel.Left := Width + ScaleX(10 ); DatabaseDirPage.SubCaptionLabel.Top := DatabaseDirPage.SubCaptionLabel.Top + Height - DatabaseDirPage.Buttons[0 ].Height; Top := WizardForm.SelectTasksPage.Top + ScaleY(0 ); DatabaseDirPage.PromptLabels[0 ].Top := DatabaseDirPage.PromptLabels[0 ].Top + ScaleY(15 ); DatabaseDirPage.Edits[0 ].Top := DatabaseDirPage.Edits[0 ].Top + ScaleY(20 ); DatabaseDirPage.Buttons[0 ].Top := DatabaseDirPage.Buttons[0 ].Top + ScaleY(20 ); end ;
如果在使用的过程中,发现页面加载过渡不顺畅,那么可以在函数function InitializeSetup()中展开图像文件,
1 ExtractTemporaryFile('DatabaseIcon225x225.bmp' );
本文小结 这些背景知识是自己在完成该项任务的一开始具有的疑问,进而在茫茫文海中查阅,再收集整理成文的,这利于自己,也方便你我。如果你有问题或者不同的见解,欢迎关注我的微信公众号,然后留言讨论。