Inno Setup在下次安装时记住“自定义”复选框状态

Webium

当用户下次运行安装程序或重新安装时,是否可以记住自定义页面上自定义复选框的状态(选中/取消选中)?类似于经典的ComponentsList中的东西。

安装程序具有cca。7个自定义页面上有100个选项(自定义复选框/单选按钮)。如果用户从先前的安装中预定义了他们的选择,那就太好了。

我的代码如下所示:

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: ReadMe1.rtf; Flags: dontcopy
Source: ReadMe2.rtf; Flags: dontcopy
Source: ReadMe3.rtf; Flags: dontcopy

Source: Image1.bmp; Flags: dontcopy
Source: Image2.bmp; Flags: dontcopy
Source: Image3.bmp; Flags: dontcopy

Source: Files\*; DestDir: {app}\add; Flags: ignoreversion recursesubdirs createallsubdirs; Check: CheckedBox(2)

[Code]
var
  Page: TWizardPage;
  ListBox: TNewCheckListBox;
  Memo: TRichEditViewer;
  CheckLabel: TLabel;
  MouseY: integer;
  BitmapImage: TBitmapImage;
  InfoBmp: array of TBitmap;

function CheckedBox(ItemNumber: integer): Boolean;
begin                                    
  Result:= ListBox.Checked[ItemNumber];  
end;

procedure CheckOnClick (Sender: TObject); 
begin
  if MouseY < ListBox.Items.Count then
    begin 
      ListBox.Checked[MouseY]:= Not(ListBox.Checked[MouseY]);
    end;
end;

procedure CheckMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin                                       
  MouseY:= Y/ScaleY(16);
  if MouseY < ListBox.Items.Count then
    begin  
      Memo.RTFText:= TStrings(ListBox.ItemObject[MouseY]).Text;
      BitmapImage.Bitmap:= InfoBmp[MouseY];
    end;
end;

procedure InitializeWizard();
var
  i: integer;
begin
  ExtractTemporaryFile('ReadMe1.rtf'); ˙
  ExtractTemporaryFile('ReadMe2.rtf');
  ExtractTemporaryFile('ReadMe3.rtf');
  ExtractTemporaryFile('Image1.bmp');  
  ExtractTemporaryFile('Image2.bmp');
  ExtractTemporaryFile('Image3.bmp');

  Page:=CreateCustomPage(wpWelcome, 'Title', 'Description')

  ListBox:= TNewCheckListBox.Create(Page); 
  with ListBox do
    begin
      Left   := 15
      Top    := 0
      Width  := 200
      Height := 149
      Parent := Page.Surface
      AddCheckBox('Global', '', 0, True, True, True, True, TStringList.Create);
      AddCheckBox('Option 1', '', 1, True, True, False, True, TStringList.Create);
      AddCheckBox('Option 2', '', 1, True, True, False, True, TStringList.Create);

      TStrings(ItemObject[0]).LoadFromFile(ExpandConstant('{tmp}\ReadMe1.rtf'));
      TStrings(ItemObject[1]).LoadFromFile(ExpandConstant('{tmp}\ReadMe2.rtf'));
      TStrings(ItemObject[2]).LoadFromFile(ExpandConstant('{tmp}\ReadMe3.rtf'));
    end;

  Memo:= TRichEditViewer.Create(Page); 
  with Memo do
    begin
      Left        := ListBox.Left + ListBox.Width + 8;
      Top         := ListBox.Top;
      Width       := ListBox.Width;
      Height      := ListBox.Height;
      Color       := clBtnFace;
      Enabled     := False;
      BorderStyle := bsNone;
      Parent      := Page.Surface;
    end;

  CheckLabel:= TLabel.Create(Page);  
  with CheckLabel do
    begin
      Width       :=ListBox.Width;
      Height      :=ListBox.Height;
      Autosize    :=False;
      Transparent :=True;
      OnMouseMove :=@CheckMouseMove;
      OnClick     :=@CheckOnClick;
      Parent      :=ListBox;
      Cursor      := 1;
    end;

  BitmapImage := TBitmapImage.Create(Page);
  with BitmapImage do                       
    begin                                   
      AutoSize := True;
      Left        := ListBox.Left;
      Top         := ListBox.Top + ListBox.Height + 8;
      Width       := ListBox.Width;
      Height      := 32;
      Parent := Page.Surface;
    end;

  for i:=0 to ListBox.Items.Count - 1 do  
    begin                                
      SetArrayLength(InfoBmp, i+1);
      InfoBmp[i]:= TBitmap.Create;
    end;

  InfoBmp[0].LoadFromFile(ExpandConstant('{tmp}\Image1.bmp'));
  InfoBmp[1].LoadFromFile(ExpandConstant('{tmp}\Image2.bmp'));
  InfoBmp[2].LoadFromFile(ExpandConstant('{tmp}\Image3.bmp'));
end; 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

下次执行Inno Setup制作的安装程序时,在自定义页面上恢复先前输入的数据

来自分类Dev

Inno Setup:自定义类

来自分类Dev

Inno Setup:创建自定义表单

来自分类Dev

Inno Setup:自定义类

来自分类Dev

Inno Setup从代码更改组件复选框状态后更新磁盘空间

来自分类Dev

Inno Setup:运行程序而不显示复选框

来自分类Dev

Inno Setup:运行程序而不显示复选框

来自分类Dev

Inno Setup - 控件/复选框的动态定位

来自分类Dev

Inno Setup记住当Uninstallable = no时选择的安装类型

来自分类Dev

Inno Setup安装程序默认为“自定义”安装,而不是“完全”安装

来自分类Dev

Inno Setup的自定义页面向导

来自分类Dev

在Inno-Setup中使用自定义DLL

来自分类Dev

Inno Setup语言对话框自定义

来自分类Dev

Inno Setup:“就绪页面”自定义布局

来自分类Dev

Inno Setup使用Pascal脚本自定义FinishedLabel

来自分类Dev

Inno Setup的自定义页面向导

来自分类Dev

使用Google Map的Inno Setup自定义页面

来自分类Dev

Inno Setup:自定义页面选择更新或删除/卸载

来自分类Dev

Inno Setup - 创建自定义消息框(是/否)

来自分类Dev

每个用户或每个计算机安装的Inno Setup自定义对话框

来自分类Dev

Inno Setup 安装中的按钮被裁剪,自定义消息显示为乱码(日语)

来自分类Dev

Inno Setup语法-OR,AND

来自分类Dev

Inno Setup中的TTreeView

来自分类Dev

如何从Inno Setup安装JRE?

来自分类Dev

在Inno Setup中取消安装

来自分类Dev

Inno Setup:仅在非常安静时安装

来自分类Dev

Inno Setup:仅在不静音时安装

来自分类Dev

Chrome的Inno设置自定义网址

来自分类Dev

在Inno Setup“完成”页面上访问复选框控件的属性

Related 相关文章

热门标签

归档