论坛风格切换切换到宽版
  • 3330阅读
  • 4回复

inno 页面自定义问题 [复制链接]

上一主题 下一主题
离线qgt128
 

发帖
21
金钱
210
威望
21
只看楼主 倒序阅读 0 发表于: 2013-09-09


大哥们看看下,怎么没有在默认勾选下执行命令(快捷方式),万分谢谢!

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
Compression=lzma2
SolidCompression=yes
OutputDir=userdocs:Inno Setup Examples Output
[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme

[Icons]
Name: {commondesktop}\我的程序; Filename: {app}\MyProg.exe; Tasks: task1
[Tasks]
Name: task1; Description: "任务 1"; GroupDescription: "快捷方式1:"
Name: task2; Description: "任务 2"; GroupDescription: "快捷方式2:"
Name: task3; Description: "任务 3"; GroupDescription: "快捷方式3:"
[code]
var
  NewCheckBox1: TNewCheckBox;
  NewCheckBox2: TNewCheckBox;
  NewCheckBox3: TNewCheckBox;
procedure RedesignWizardForm;
begin
  with WizardForm.TasksList do
  begin
    Visible := False;
  end;
  { NewCheckBox1 }
  NewCheckBox1 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox1 do
  begin
    Name := 'NewCheckBox1';
    Parent := WizardForm.SelectdirPage;
    Left := ScaleX(0);
    Top := ScaleY(135);
    Width := ScaleX(113);
    Height := ScaleY(25);
    Caption := '快捷方式1';
  end;
  { NewCheckBox2 }
  NewCheckBox2 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox2 do
  begin
    Name := 'NewCheckBox2';
    Parent := WizardForm.SelectdirPage;
    Left := ScaleX(120);
    Top := ScaleY(135);
    Width := ScaleX(121);
    Height := ScaleY(25);
    Caption := '快捷方式2';
  end;
  { NewCheckBox3 }
  NewCheckBox3 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox3 do
  begin
    Name := 'NewCheckBox3';
    Parent := WizardForm.SelectdirPage;
    Left := ScaleX(256);
    Top := ScaleY(135);
    Width := ScaleX(129);
    Height := ScaleY(25);
    Caption := '快捷方式3';
  end;
  NewCheckBox1.TabOrder := 1;
  NewCheckBox2.TabOrder := 2;
  NewCheckBox3.TabOrder := 3;
end;
procedure initializewizard;
begin
  RedesignWizardForm;
end;
function NextButtonClick (CurPageID : Integer): Boolean;
begin
Result:= True;
if CurPageID= wpSelectTasks then
  begin
  WizardForm.TasksList.Checked[1]:= NewCheckBox1.Checked;
  WizardForm.TasksList.Checked[2]:= NewCheckBox2.Checked;
  WizardForm.TasksList.Checked[3]:= NewCheckBox3.Checked;
  end;
end;
function ShouldSkipPage ( PageID : Integer): Boolean;
begin
result := false;
if  PageID = wpSelectTasks then  
     result := true;  
end;




离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2013-09-10
你先要定义一个默认项。

with NewCheckBox1 do
  begin
    Name := 'NewCheckBox1';
    Parent := WizardForm.SelectdirPage;
    Left := ScaleX(0);
    Top := ScaleY(135);
    Width := ScaleX(113);
    Height := ScaleY(25);
    Caption := '快捷方式1';
    Checked:= true;
  end;

另外:
  WizardForm.TasksList.Checked[0]:= NewCheckBox1.Checked;
  WizardForm.TasksList.Checked[1]:= NewCheckBox2.Checked;
  WizardForm.TasksList.Checked[2]:= NewCheckBox3.Checked;
离线qgt128

发帖
21
金钱
210
威望
21
只看该作者 2 发表于: 2013-09-10
老虎,解决不了;无论加不加
Checked:= true;
WizardForm.TasksList.Checked[0]:= NewCheckBox1.Checked;
勾选还是不勾选,依然还会创建快捷方式,如果去掉(我的以上脚本)
function ShouldSkipPage ( PageID : Integer): Boolean;
begin
result := false;
if  PageID = wpSelectTasks then  
     result := true;  
end;
是正常运行。
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2013-09-12
前面误解了你的意思。

你的问题可以这样解决:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
Compression=lzma2
SolidCompression=yes
OutputDir=userdocs:Inno Setup Examples Output

[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme

[Icons]
Name: {commondesktop}\我的程序; Filename: {app}\MyProg.exe; Tasks: task1

[Tasks]
Name: task1; Description: "任务 1";
Name: task2; Description: "任务 2";
Name: task3; Description: "任务 3";

[code]
var
  NewCheckBox1: TNewCheckBox;
  NewCheckBox2: TNewCheckBox;
  NewCheckBox3: TNewCheckBox;
  
procedure RedesignWizardForm;
begin
  with WizardForm.TasksList do
  begin
    Visible := False;
  end;
  { NewCheckBox1 }
  NewCheckBox1 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox1 do
  begin
    Name := 'NewCheckBox1';
    Parent := WizardForm.SelectdirPage;
    Left := ScaleX(0);
    Top := ScaleY(135);
    Width := ScaleX(113);
    Height := ScaleY(25);
    Caption := '快捷方式1';
    Checked := true;
  end;
  { NewCheckBox2 }
  NewCheckBox2 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox2 do
  begin
    Name := 'NewCheckBox2';
    Parent := WizardForm.SelectdirPage;
    Left := ScaleX(120);
    Top := ScaleY(135);
    Width := ScaleX(121);
    Height := ScaleY(25);
    Caption := '快捷方式2';
  end;
  { NewCheckBox3 }
  NewCheckBox3 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox3 do
  begin
    Name := 'NewCheckBox3';
    Parent := WizardForm.SelectdirPage;
    Left := ScaleX(256);
    Top := ScaleY(135);
    Width := ScaleX(129);
    Height := ScaleY(25);
    Caption := '快捷方式3';
  end;
  NewCheckBox1.TabOrder := 1;
  NewCheckBox2.TabOrder := 2;
  NewCheckBox3.TabOrder := 3;
end;

procedure initializewizard;
begin
  RedesignWizardForm;
end;

function NextButtonClick (CurPageID : Integer): Boolean;
begin
Result:= True;
if CurPageID= wpSelectTasks then
  begin
  WizardForm.TasksList.Checked[0]:= NewCheckBox1.Checked;
  WizardForm.TasksList.Checked[1]:= NewCheckBox2.Checked;
  WizardForm.TasksList.Checked[2]:= NewCheckBox3.Checked;
  end;
end;

procedure CurPageChanged (PageID : Integer);
begin
if  PageID = wpSelectTasks then
  WizardForm.NextButton.Click;
end;
离线qgt128

发帖
21
金钱
210
威望
21
只看该作者 4 发表于: 2013-09-12
回 3楼(gnatix) 的帖子
gnatix:前面误解了你的意思。你的问题可以这样解决:[Setup]....... (2013-09-12 03:44) 

Ok,谢了 老虎!