阅读背景:

一个相对完整的inno setup

来源:互联网 

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = 
          

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

12; WM_USER = 0; WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别 MF_BYPOSITION = 0; MF_ENABLED = 0; MF_GRAYED = 1; IMAGE_ICON = 1; LR_LOADFROMFILE = ; function ReleaseCapture(): Longint; external "[email protected] stdcall"; function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall"; function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall"; function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall"; var Ico: UINT; MySetupForm: TSetupForm; TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox; //创立目录页面选框和新页面复选框 TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel; //请选择安装目录 sversion,bigLabel:Tlabel; //关闭按钮 CloseBtn: TBitmapImage; //安装百分比 ProgressLabel: TLabel; //安装细节 DetaList: TNewListBox; ShowDetaBtn: TNewButton; //按钮 NewDirEdit,setbtn,setbcbtn:Tlabel; NextButton: TBitmapImage; F: String; WizardFormImage: TBitmapImage; //目录阅读框 dirviewImage: TBitmapImage; //选择目录 dirCooseImage: TBitmapImage; //自定义安装 zdyianZhuangImage: TBitmapImage; //迅速安装 ksuanZhuangImage: TBitmapImage; //返回 backBtn: TBitmapImage; procedure BitmapImage1MouseLeave(Sender: TObject); forward; procedure en(Sender: TObject); forward; //安装细节 procedure ShowDetaBtnOnClick(Sender: TObject); begin ShowDetaBtn.Visible := False; DetaList.Visible := True; end; //单击“撤消”直接退出 procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); begin Confirm := False; end; //关闭按钮 procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp")); end; procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp")); end; procedure CloseBtnOnMouseEnter(Sender: TObject); begin CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp")) end; procedure CloseBtnOnMouseLeave(Sender: TObject); begin CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp")); end; procedure CloseBtnOnClick(Sender: TObject); begin WizardForm.Close; end; //打开网站 //procedure baiduclick(Sender: TObject); //begin //ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode); //end; //procedure tbclick(Sender: TObject); //begin //ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode); //end; procedure setting(Sender: TObject); begin NextButton.Parent := WizardForm; //setbcbtn.show //setbtn.hide NewLabel.hide bigLabel.show sversion.show TaskBox1.show //TaskBox2.show TaskBox3.show NewDirEdit.hide TaskBox1Label.show backBtn.Parent := WizardForm; NewLabel.Caption := ExpandConstant("安装目录:"); //控件文字 "#13" NewDirEdit.Caption:=WizardForm.DirEdit.Text; if (Length(WizardForm.DirEdit.Text)>45) then begin NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20) + "..." + Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20); end; TaskBox3Label.show NewDirEdit.show dirviewImage.show NewLabel.show NextButton.show dirCooseImage.show NewLabel.show NewDirEdit.Show; zdyianZhuangImage.Hide; ksuanZhuangImage.Hide; backBtn.Show; WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp")); end; //返回 procedure settingbcbtn(Sender: TObject); begin NextButton.show //setbcbtn.hide //setbtn.show sversion.show TaskBox1.hide //TaskBox2.hide TaskBox3.hide TaskBox1Label.hide //TaskBox2Label.hide TaskBox3Label.hide NextButton.hide; dirviewImage.Hide; NewLabel.hide; NextButton.Hide; dirCooseImage.Hide; NewLabel.Hide; NewDirEdit.hide; zdyianZhuangImage.Show; ksuanZhuangImage.Show; backBtn.Hide; WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp")); end; //阅读 procedure NewDirBrowseButtonClick(Sender: TObject); begin WizardForm.DirBrowseButton.Click; NewDirEdit.Caption:=WizardForm.DirEdit.Text; if (Length(WizardForm.DirEdit.Text)>45) then begin NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20) + "..." + Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20); end; end; procedure TaskBox1LabelOnClick(Sender: TObject); begin if TaskBox1.Checked = False then TaskBox1.Checked := True else TaskBox1.Checked := False; end; procedure TaskBox2LabelOnClick(Sender: TObject); begin if TaskBox2.Checked = False then TaskBox2.Checked := True else TaskBox2.Checked := False; end; procedure TaskBox3LabelOnClick(Sender: TObject); begin if TaskBox3.Checked = False then TaskBox3.Checked := True else TaskBox3.Checked := False; end; procedure RunBox1LabelOnClick(Sender: TObject); begin if RunBox1.Checked = False then RunBox1.Checked := True else RunBox1.Checked := False; end; procedure RunBox2LabelOnClick(Sender: TObject); begin if RunBox2.Checked = False then RunBox2.Checked := True else RunBox2.Checked := False; end; procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0) end; //体系托盘 procedure TrayMenuItemOnClick(MenuItemIndex: Integer); begin // 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件 if not IsWindowEnabled(WizardForm.Handle) then exit; Case MenuItemIndex of 0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发. 2: MainForm.ShowAboutBox; 4: WizardForm.Close; end; end; procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean); begin // 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单 bShow := IsWindowEnabled(WizardForm.Handle); // 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单 if WizardFormInTray() then begin EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED); EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED); end else begin EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED); EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED); end; end; //安装按键 procedure en(Sender: TObject); begin WizardForm.NextButton.Click; end; procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\btnIn3.bmp"); NextButton.Bitmap.LoadFromFile(F); end; procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\btnIn2.bmp"); NextButton.Bitmap.LoadFromFile(F); end; procedure fs(Sender: TObject); begin F:= ExpandConstant("{tmp}\btnIn2.bmp"); NextButton.Bitmap.LoadFromFile(F); end; procedure BitmapImage1MouseLeave(Sender: TObject); begin F:= ExpandConstant("{tmp}\btnIn1.bmp"); NextButton.Bitmap.LoadFromFile(F); end; //阅读按键 btn_by2 procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\btn_by3.bmp"); dirCooseImage.Bitmap.LoadFromFile(F); end; procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\btn_by2.bmp"); dirCooseImage.Bitmap.LoadFromFile(F); end; procedure btn_bys(Sender: TObject); begin F:= ExpandConstant("{tmp}\btn_by2.bmp"); dirCooseImage.Bitmap.LoadFromFile(F); end; procedure btn_byMouseLeave(Sender: TObject); begin F:= ExpandConstant("{tmp}\btn_by1.bmp"); dirCooseImage.Bitmap.LoadFromFile(F); end; //自定义安装按钮 zdyianZhuangImage procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\btn_n3.bmp"); zdyianZhuangImage.Bitmap.LoadFromFile(F); end; procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\btn_n2.bmp"); zdyianZhuangImage.Bitmap.LoadFromFile(F); end; procedure btn_nys(Sender: TObject); begin F:= ExpandConstant("{tmp}\btn_n2.bmp"); zdyianZhuangImage.Bitmap.LoadFromFile(F); end; procedure btn_nMouseLeave(Sender: TObject); begin F:= ExpandConstant("{tmp}\btn_n1.bmp"); zdyianZhuangImage.Bitmap.LoadFromFile(F); end; //迅速安装 procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\btn_ss3.bmp"); ksuanZhuangImage.Bitmap.LoadFromFile(F); end; procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\btn_ss2.bmp"); ksuanZhuangImage.Bitmap.LoadFromFile(F); end; procedure btns_nys(Sender: TObject); begin F:= ExpandConstant("{tmp}\btn_ss2.bmp"); ksuanZhuangImage.Bitmap.LoadFromFile(F); end; procedure btns_nMouseLeave(Sender: TObject); begin F:= ExpandConstant("{tmp}\btn_ss1.bmp"); ksuanZhuangImage.Bitmap.LoadFromFile(F); end; //返回 procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\backBtn3.bmp"); backBtn.Bitmap.LoadFromFile(F); end; procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); begin F:= ExpandConstant("{tmp}\backBtn2.bmp"); backBtn.Bitmap.LoadFromFile(F); end; procedure backBtn_nys(Sender: TObject); begin F:= ExpandConstant("{tmp}\backBtn2.bmp"); backBtn.Bitmap.LoadFromFile(F); end; procedure backBtn_nMouseLeave(Sender: TObject); begin F:= ExpandConstant("{tmp}\backBtn1.bmp"); backBtn.Bitmap.LoadFromFile(F); end; function ShouldSkipPage(PageID: Integer): Boolean; begin if PageID=wpWelcome then result := true; if PageID=wpFinished then result := true; end; procedure InitializeWizard(); begin //WizardForm.Width:=482; //WizardForm.Height:=302; WizardForm.Width:=587; WizardForm.Height:=437; WizardForm.BorderStyle:=bsNone; //去边框 ExtractTemporaryFile("window.bmp"); ExtractTemporaryFile("window2.bmp"); ExtractTemporaryFile("Close1.bmp"); ExtractTemporaryFile("Close2.bmp"); ExtractTemporaryFile("Close3.bmp"); ExtractTemporaryFile("btnIn1.bmp"); ExtractTemporaryFile("btnIn2.bmp"); ExtractTemporaryFile("btnIn3.bmp"); ExtractTemporaryFile("installer.ico"); //按键 ExtractTemporaryFile("DirImg.bmp"); ExtractTemporaryFile("btn_by1.bmp"); ExtractTemporaryFile("btn_by2.bmp"); ExtractTemporaryFile("btn_by3.bmp"); ExtractTemporaryFile("btn_n1.bmp"); ExtractTemporaryFile("btn_n2.bmp"); ExtractTemporaryFile("btn_n3.bmp"); ExtractTemporaryFile("btn_ss1.bmp"); ExtractTemporaryFile("btn_ss2.bmp"); ExtractTemporaryFile("btn_ss3.bmp"); ExtractTemporaryFile("backBtn1.bmp"); ExtractTemporaryFile("backBtn2.bmp"); ExtractTemporaryFile("backBtn3.bmp"); WizardFormImage := TBitmapImage.Create(WizardForm); WizardFormImage.Parent := WizardForm; WizardFormImage.Align := alClient; //图片拉伸 //WizardFormImage.SendToBack; //显示底部横线 WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp")) WizardFormImage.OnMouseDown:=@WizardFormMouseDown; //透明 //SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED) //SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY) //体系托盘 Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE); InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle, WM_ICON_NOTIFY, // 自定义自己的资讯 ID, 以辨别其他资讯 CustomMessage("Tooltip"), // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒 Ico, // 这里默许应用安装程序图标 True, // 立即显示, 不用调用 ShowTrayIcon False, // 不显示安装程序的义务栏按钮 CustomMessage("MenuStrs"), // 不树立托盘图标菜单 0, // 没有默许菜单项 @TrayMenuItemOnClick, // 没有菜单点击事件 @TrayMenuOnPopup, // 没有菜单弹失事件 nil // 没有自定义托盘图标事件 ); // 显示漫画型气泡提醒 ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False); //关闭按钮 CloseBtn := TBitmapImage.Create(WizardForm); CloseBtn.ShowHint := True; CloseBtn.Cursor := crHand; CloseBtn.OnMouseDown := @CloseBtnOnMouseDown; CloseBtn.OnMouseUp := @CloseBtnOnMouseUp; CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter; CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave; CloseBtn.Parent := WizardForm; CloseBtn.Width := 22 CloseBtn.Height := 22 CloseBtn.Left := 454+108; CloseBtn.Top := 3; CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp")); CloseBtn.OnClick:= @CloseBtnOnClick; //自定义安装按钮 zdyianZhuangImage := TBitmapImage.Create(WizardForm); zdyianZhuangImage.ShowHint := True; zdyianZhuangImage.Cursor := crHand; zdyianZhuangImage.Parent := WizardForm; zdyianZhuangImage.Width := 91; zdyianZhuangImage.Height := 14; zdyianZhuangImage.Left := WizardForm.Width - 91 - 20; zdyianZhuangImage.Top := WizardForm.Height - 30; zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp")); zdyianZhuangImage.OnClick:=@setting; zdyianZhuangImage.OnMouseDown := @btn_ndown; zdyianZhuangImage.OnMouseUp:=@btn_nup; zdyianZhuangImage.OnMouseEnter := @btn_nys; zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave; //迅速安装ksuanZhuangImage ksuanZhuangImage := TBitmapImage.Create(WizardForm); ksuanZhuangImage.ShowHint := True; ksuanZhuangImage.Cursor := crHand; ksuanZhuangImage.Parent := WizardForm; ksuanZhuangImage.Width := 210; ksuanZhuangImage.Height := 59; ksuanZhuangImage.Left := (WizardForm.Width - 210)/2; ksuanZhuangImage.Top := WizardForm.Height/3*2+20; ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp")); ksuanZhuangImage.OnClick:=@en; ksuanZhuangImage.OnMouseDown := @btns_ndown; ksuanZhuangImage.OnMouseUp:=@btns_nup; ksuanZhuangImage.OnMouseEnter := @btns_nys; ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave; //安装按钮 NextButton := TBitmapImage.Create(WizardForm); NextButton.ShowHint := True; NextButton.Cursor := crHand; //NextButton.Parent := WizardForm; NextButton.Width := 95; NextButton.Height := 30; NextButton.Left := WizardForm.Width - 91 - 100; NextButton.Top := WizardForm.Height -(16 + 30); NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp")); NextButton.OnClick:= @en; NextButton.OnMouseDown := @fdown; NextButton.OnMouseUp:=@fup; NextButton.OnMouseEnter := @fs; NextButton.OnMouseLeave := @BitmapImage1MouseLeave; //返回按钮 backBtn := TBitmapImage.Create(WizardForm); backBtn.ShowHint := True; backBtn.Cursor := crHand; //backBtn.Parent := WizardForm; backBtn.Width := 64; backBtn.Height := 29; backBtn.Left := NextButton.Left + 95 +10 ; backBtn.Top := NextButton.Top; backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp")); backBtn.OnClick:= @settingbcbtn; backBtn.OnMouseDown := @backBtn_ndown; backBtn.OnMouseUp:=@backBtn_nup; backBtn.OnMouseEnter := @backBtn_nys; backBtn.OnMouseLeave := @backBtn_nMouseLeave; //setbtn := TLabel.Create(WizardForm); //setbtn.Parent := WizardForm; //setbtn.Font.Name := "微软雅黑"; //setbtn.Font.Size := 9 //setbtn.Font.Color :=

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

75FFDD; //setbtn.Font.Style := [fsUnderline]; //setbtn.Transparent := True; //setbtn.Cursor:= MyCursor2; //setbtn.AutoSize := True; //setbtn.WordWrap := True; //setbtn.OnClick :=@setting; //setbtn.Caption := ExpandConstant("高等选项"); //setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16)); //setbcbtn := TLabel.Create(WizardForm); //setbcbtn.Parent := WizardForm; //setbcbtn.Font.Name := "微软雅黑"; //setbcbtn.Font.Size := 9 //setbcbtn.Font.Color :=

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

75FFDD; //setbcbtn.Font.Style := [fsUnderline]; //setbcbtn.Transparent := True; //setbcbtn.Cursor:= MyCursor2; //setbcbtn.AutoSize := True; //setbcbtn.WordWrap := True; //setbcbtn.OnClick :=@settingbcbtn; //setbcbtn.Caption := ExpandConstant("返回安装"); //setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16)); //WizardForm WizardForm.OuterNotebook.Hide; WizardForm.BeveledLabel.Width := 0 WizardForm.BeveledLabel.Height := 0 //CancelButton WizardForm.CancelButton.Width:= 0 WizardForm.CancelButton.Height:= 0 //BackButton WizardForm.BackButton.Width:= 0 WizardForm.BackButton.Height:= 0 //NextButton WizardForm.NextButton.Width:= 0 WizardForm.NextButton.Height:= 0 //大标签 bigLabel := TLabel.Create(WizardForm); bigLabel.Parent := WizardForm; //bigLabel.Font.Name := "微软雅黑"; bigLabel.Font.Name := "Microsoft YaHei"; bigLabel.Font.Size := 20 bigLabel.Font.Style := [fsBold]; bigLabel.Font.Color := clWhite; bigLabel.Transparent := True; bigLabel.AutoSize := True; bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30)); bigLabel.Caption := "{#MyAppName} 安装包" bigLabel.Show; //安装版本 sversion := TLabel.Create(WizardForm); sversion.Parent := WizardForm; //sversion.Font.Name := "微软雅黑"; sversion.Font.Name := "Microsoft YaHei"; sversion.Font.Size := 9 sversion.Font.Style := [fsBold]; sversion.Font.Color := clWhite; sversion.Transparent := True; sversion.AutoSize := False; sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16)); sversion.Caption := "安装版本:0001.0000.0001.0002" //添加桌面快捷方法复选框 TaskBox1 := TCheckBox.Create(WizardForm); TaskBox1.Parent := WizardForm; TaskBox1.Left := (WizardForm.Width - 446 - 94)/2; TaskBox1.Top := ScaleY(413); TaskBox1.Width := ScaleY(13); TaskBox1.Height := ScaleY(13); TaskBox1.Checked := True; TaskBox1Label := TLabel.Create(WizardForm); TaskBox1Label.Parent := WizardForm; //地位 TaskBox1Label.Caption := "创立桌面快捷方法"; //控件文字 "#13" TaskBox1Label.WordWrap := True; TaskBox1Label.Font.Name := "宋体"; TaskBox1Label.Font.Size := 9 //字体大小 TaskBox1Label.Font.Color :=

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

000000; //控件文字色彩 TaskBox1Label.Font.Style := [] TaskBox1Label.Transparent := True; //控件透显著示 TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0); TaskBox1Label.Top := TaskBox1.Top + 1; TaskBox1Label.Width := 100 TaskBox1Label.Height := TaskBox1.Height; TaskBox1Label.OnClick := @TaskBox1LabelOnClick; //-------------------------------------- //目录阅读框 dirviewImage := TBitmapImage.Create(WizardForm); dirviewImage.ShowHint := True; dirviewImage.Cursor := crHand; dirviewImage.Parent := WizardForm; dirviewImage.Width := 446 dirviewImage.Height := 36 dirviewImage.Left := TaskBox1.Left; dirviewImage.Top := WizardForm.Top -20; dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp")); //阅读按钮 dirCooseImage := TBitmapImage.Create(WizardForm); dirCooseImage.ShowHint := True; dirCooseImage.Cursor := crHand; dirCooseImage.Parent := WizardForm; dirCooseImage.Width := 94; dirCooseImage.Height := 36; dirCooseImage.Left := dirviewImage.Left + 446; dirCooseImage.Top := dirviewImage.Top; dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp")); dirCooseImage.OnClick:= @NewDirBrowseButtonClick; dirCooseImage.OnMouseDown := @btn_bydown; dirCooseImage.OnMouseUp:=@btn_byup; dirCooseImage.OnMouseEnter := @btn_bys; dirCooseImage.OnMouseLeave := @btn_byMouseLeave; //安装目录 NewLabel := TLabel.Create(WizardForm); NewLabel.Parent := WizardForm; NewLabel.Font.Name := "宋体"; NewLabel.Font.Size := 9 NewLabel.Font.Color :=

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

000000; NewLabel.Font.Style := [] NewLabel.Transparent := True; NewLabel.AutoSize := False; NewLabel.WordWrap := True; NewLabel.Left := ScaleX(dirviewImage.Left); NewLabel.Top := ScaleY(dirviewImage.Top - 5); NewLabel.Width := WizardForm.Width - ScaleX(40); NewLabel.Height := ScaleY(14); //文字路径 NewDirEdit:=TLabel.Create(WizardForm); NewDirEdit.Parent:=WizardForm; NewDirEdit.Transparent:=True; NewDirEdit.Left:=30; NewDirEdit.Top:=dirviewImage.top+9; NewDirEdit.Font.Style := [fsBold]; //NewDirEdit.Font.Color :=

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

75FFDD; NewDirEdit.Font.Color :=

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

000000; //NewDirEdit.WordWrap := true; NewDirEdit.Width:= 446; //NewDirEdit.Cursor:= MyCursor2; //NewDirEdit.OnClick := @NewDirBrowseButtonClick; NewDirEdit.hide; //添加开端菜单程序组快捷方法 TaskBox3 := TCheckBox.Create(WizardForm); TaskBox3.Parent := WizardForm; TaskBox3.Left := TaskBox1.Left; TaskBox3.Top := TaskBox1.Top + ScaleY(25); TaskBox3.Width := TaskBox1.Width TaskBox3.Height := TaskBox1.Height TaskBox3.Checked := True; TaskBox3Label := TLabel.Create(WizardForm); TaskBox3Label.Parent := WizardForm; //地位 TaskBox3Label.Caption := "创立开端菜单程序组快捷方法"; TaskBox3Label.WordWrap := True; TaskBox3Label.Font.Name := "宋体"; TaskBox3Label.Font.Size := 9 //字体大小 TaskBox3Label.Font.Color :=

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

000000; //控件文字色彩 TaskBox3Label.Font.Style := [] TaskBox3Label.Transparent := True; //控件透显著示 TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0); TaskBox3Label.Top := TaskBox3.Top + 1; TaskBox3Label.Width := 100; TaskBox3Label.Height := TaskBox3.Height; TaskBox3Label.OnClick := @TaskBox3LabelOnClick; //NewStatusLabel NewStatusLabel := TLabel.Create(WizardForm); NewStatusLabel.Parent := WizardForm; //地位 NewStatusLabel.Font.Size := 9 //字体大小 NewStatusLabel.Font.Color := clWhite; //控件文字色彩 NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline]; //控件作风:粗体、斜体、下划线 NewStatusLabel.Transparent := True; //控件透显著示 NewStatusLabel.Left := 20 NewStatusLabel.Top := 275; NewStatusLabel.Width := NewLabel.Width; NewStatusLabel.Height := ScaleY(14); //安装百分比 ProgressLabel := TLabel.Create(WizardForm); ProgressLabel.Top := 255; ProgressLabel.Left:= 20; ProgressLabel.Font.Color :=clWhite; ProgressLabel.AutoSize := True; ProgressLabel.Transparent := True; ProgressLabel.Parent := WizardForm; //ProgressGauge WizardForm.ProgressGauge.Left:=NewLabel.Left; WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5; WizardForm.ProgressGauge.Width:=NewLabel.Width; WizardForm.ProgressGauge.Height:=21 WizardForm.ProgressGauge.Min:=0 WizardForm.ProgressGauge.Max:=100 WizardForm.ProgressGauge.Parent := WizardForm; //安装细节 //DetaList DetaList := TNewListBox.Create(WizardForm); DetaList.Parent := WizardForm; DetaList.Left := 275; DetaList.Top := 20; DetaList.Width := NewLabel.Width; DetaList.Height := ScaleY(188); DetaList.TabOrder := ScaleY(4); DetaList.Visible := False; // True默许不显示 DetaList.Color :=

代码:

;#define MyAppId "{{01DDF602-7CF8-40C9-816F-AD165F37F5E0}"
#define MyAppName "智慧引擎"
#define MyAppVersion "1.0.1.2"
#define MyAppPublisher "深圳巨龙科教高技巧股分有限公司"
#define MyAppURL "https://www.julong.com.cn/"
#define MyAppExeName "julongEngine.exe"

#include "trayiconctrl.iss"

[Setup]
AppId={{01DDF602-7CF8-40C9-816F-AD165F37F5E0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Julong Educational\SCEngine
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\
OutputBaseFilename=SCEngine setup
SetupIconFile=installer.ico
Compression=lzma/ultra64
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppVersion}
VersionInfoDescription=SCEngine setup
DisableReadyPage=yes
DisableProgramGroupPage=yes
InternalCompressLevel=ultra64
DirExistsWarning=no
UninstallIconFile=Uninstall.ico

[Messages]
BeveledLabel=

[CustomMessages]
FinishedHeadingLabel=恭喜你,{#MyAppName}安装胜利!
FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此运用程序可以通过选择安装的快捷方法运行。%n%n单击 [完成(F)] 关闭安装程序。
Tooltip={#MyAppName} Ver 1.0
TooltipText={#MyAppName}安装正在开端...
MenuStrs=显示/隐蔽  {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"  ; WorkingDir: {app};Check: groupicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; WorkingDir: {app}; Check: groupicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";  WorkingDir: {app};Check: desktopicon
;Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\julongEngine.exe; Check: quicklaunchicon; WorkingDir: {app}

[Files]
Source: window.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: window2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: Close1.bmp; Flags: dontcopy solidbreak
Source: Close2.bmp; Flags: dontcopy solidbreak
Source: Close3.bmp; Flags: dontcopy solidbreak
Source: btnIn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btnIn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak

;Source: "D:\SCEngine Software V1.0 Packet Ver1.0.1.2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddToDetaList; AfterInstall: Progress();
Source: "installer.ico"; Flags: dontcopy
//新增按键
Source: DirImg.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_by3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_n3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: btn_ss3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn1.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn2.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak
Source: backBtn3.bmp; DestDir: {tmp}; Flags: dontcopy solidbreak



[Registry]
Root: HKCU; Subkey: "Software\Microsoft\SCEngine"; valueType: string; valueName: "path" ; valueData: """{app}\{#MyAppExeName}""";Flags: uninsdeletevalue;


[Code]
Const
  WM_SYSCOMMAND = $0112;
  WM_USER = $400;
  WM_ICON_NOTIFY = WM_USER + 22; // 自己定义一个 TrayIcon 的资讯标记以和其他的资讯辨别
  MF_BYPOSITION = $400;
  MF_ENABLED = 0;
  MF_GRAYED = 1;
  IMAGE_ICON = 1;
  LR_LOADFROMFILE = $10;
function ReleaseCapture(): Longint; external "[email protected] stdcall";
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): BOOL; external "[email protected] stdcall";
function IsWindowEnabled(hWnd: HWND): BOOL; external "[email protected] stdcall";
function LoadImage(hInst: UINT; ImageName: String; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external "[email protected] stdcall";
var
Ico: UINT;
MySetupForm: TSetupForm;
TaskBox1,TaskBox2,TaskBox3,RunBox1,RunBox2,RunBox3,RunBox4: TCheckBox;  //创立目录页面选框和新页面复选框
TaskBox1Label,TaskBox2Label,TaskBox3Label,TaskBox4Label,TaskBox5Label,TaskBox6Label,NewLabel,NewStatusLabel,FinishedLabel3,FinishedLabel4,RunBox1Label,RunBox2Label,RunBox3Label,RunBox4Label: TLabel;  //请选择安装目录

sversion,bigLabel:Tlabel;
//关闭按钮
CloseBtn: TBitmapImage;
//安装百分比
ProgressLabel: TLabel;
//安装细节
DetaList: TNewListBox;
ShowDetaBtn: TNewButton;
//按钮
NewDirEdit,setbtn,setbcbtn:Tlabel;
NextButton: TBitmapImage;
F: String;
WizardFormImage: TBitmapImage;
//目录阅读框
dirviewImage: TBitmapImage;
//选择目录
dirCooseImage: TBitmapImage;
//自定义安装
zdyianZhuangImage: TBitmapImage;
//迅速安装
ksuanZhuangImage: TBitmapImage;
//返回
backBtn: TBitmapImage;

procedure BitmapImage1MouseLeave(Sender: TObject); forward;
procedure en(Sender: TObject); forward;


//安装细节
procedure ShowDetaBtnOnClick(Sender: TObject);
begin
ShowDetaBtn.Visible := False;
DetaList.Visible := True;
end;
//单击“撤消”直接退出
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

//关闭按钮
procedure CloseBtnOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close3.bmp"));
end;

procedure CloseBtnOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"));
end;

procedure CloseBtnOnMouseEnter(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close2.bmp"))
end;

procedure CloseBtnOnMouseLeave(Sender: TObject);
begin
  CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
end;

procedure CloseBtnOnClick(Sender: TObject);
begin
WizardForm.Close;
end;
//打开网站
//procedure baiduclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.baidu.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;
//procedure tbclick(Sender: TObject);
//begin
//ShellExec("open", "https://www.taobao.com/", "", "", SW_SHOWNORMAL, ewNoWait, ErrorCode);
//end;

procedure setting(Sender: TObject);
begin
NextButton.Parent := WizardForm;
//setbcbtn.show
//setbtn.hide
NewLabel.hide
bigLabel.show
sversion.show
TaskBox1.show
//TaskBox2.show
TaskBox3.show
NewDirEdit.hide
TaskBox1Label.show
backBtn.Parent := WizardForm;
NewLabel.Caption := ExpandConstant("安装目录:");  //控件文字  "#13"
NewDirEdit.Caption:=WizardForm.DirEdit.Text;
if (Length(WizardForm.DirEdit.Text)>45) then
begin
    NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
end;
TaskBox3Label.show
NewDirEdit.show
dirviewImage.show
NewLabel.show
NextButton.show
dirCooseImage.show
NewLabel.show
NewDirEdit.Show;
zdyianZhuangImage.Hide;
ksuanZhuangImage.Hide;
backBtn.Show;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window2.bmp"));
end;
//返回
procedure settingbcbtn(Sender: TObject);
begin
NextButton.show
//setbcbtn.hide
//setbtn.show
sversion.show
TaskBox1.hide
//TaskBox2.hide
TaskBox3.hide
TaskBox1Label.hide
//TaskBox2Label.hide
TaskBox3Label.hide
NextButton.hide;
dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
NewDirEdit.hide;
zdyianZhuangImage.Show;
ksuanZhuangImage.Show;
backBtn.Hide;
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"));
end;
//阅读
procedure NewDirBrowseButtonClick(Sender: TObject);
begin
  WizardForm.DirBrowseButton.Click;
  NewDirEdit.Caption:=WizardForm.DirEdit.Text;
  if (Length(WizardForm.DirEdit.Text)>45) then
  begin
      NewDirEdit.Caption:= Copy(WizardForm.DirEdit.Text,0,20)  + "..." +  Copy(WizardForm.DirEdit.Text,Length(WizardForm.DirEdit.Text)-20,20);
  end;
end;

procedure TaskBox1LabelOnClick(Sender: TObject);
begin
if TaskBox1.Checked = False then
   TaskBox1.Checked := True
   else
   TaskBox1.Checked := False;
end;

procedure TaskBox2LabelOnClick(Sender: TObject);
begin
if TaskBox2.Checked = False then
   TaskBox2.Checked := True
   else
   TaskBox2.Checked := False;
end;

procedure TaskBox3LabelOnClick(Sender: TObject);
begin
if TaskBox3.Checked = False then
   TaskBox3.Checked := True
   else
   TaskBox3.Checked := False;
end;

procedure RunBox1LabelOnClick(Sender: TObject);
begin
if RunBox1.Checked = False then
   RunBox1.Checked := True
   else
   RunBox1.Checked := False;
end;

procedure RunBox2LabelOnClick(Sender: TObject);
begin
if RunBox2.Checked = False then
   RunBox2.Checked := True
   else
   RunBox2.Checked := False;
end;
procedure WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture
  SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0)
end;
//体系托盘
procedure TrayMenuItemOnClick(MenuItemIndex: Integer);
begin
// 下面 这句代码表现 WizardForm 有弹出对话框时制止菜单点击事件
if not IsWindowEnabled(WizardForm.Handle) then exit;

Case MenuItemIndex of
  0: ToggleWizardVisible; // 由于 0 项菜单为默许菜单, 所以这里的事件除菜单点击外, 双击图标也能触发.
  2: MainForm.ShowAboutBox;
  4: WizardForm.Close;
end;
end;

procedure TrayMenuOnPopup(PopMenu: LongWord; var bShow: Boolean);
begin
// 下面这一句的后果是如果 WizardForm 显示了对话框后,为了避免多重显示对话框,所以制止了右键菜单
bShow := IsWindowEnabled(WizardForm.Handle);
// 这里是菜单弹出前的处置回调函数, 以下的作用是当 WziardForm 缩到托盘区的时候, 禁用 "About" 和 "Exit" 的菜单
if WizardFormInTray() then
begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_GRAYED);
end else begin
  EnableMenuItem(PopMenu, 2, MF_BYPOSITION or MF_GRAYED);
  EnableMenuItem(PopMenu, 4, MF_BYPOSITION or MF_ENABLED);
end;
end;

 //安装按键
procedure en(Sender: TObject);
begin
WizardForm.NextButton.Click;
end;

procedure fdown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn3.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;
procedure fs(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn2.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

procedure BitmapImage1MouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btnIn1.bmp");
  NextButton.Bitmap.LoadFromFile(F);
end;

//阅读按键 btn_by2
procedure btn_bydown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by3.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_byup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;
procedure btn_bys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by2.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

procedure btn_byMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_by1.bmp");
  dirCooseImage.Bitmap.LoadFromFile(F);
end;

//自定义安装按钮 zdyianZhuangImage
procedure btn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n3.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n2.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_n1.bmp");
  zdyianZhuangImage.Bitmap.LoadFromFile(F);
end;

//迅速安装
procedure btns_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss3.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;
procedure btns_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss2.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

procedure btns_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\btn_ss1.bmp");
  ksuanZhuangImage.Bitmap.LoadFromFile(F);
end;

//返回
procedure backBtn_ndown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn3.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;
procedure backBtn_nys(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn2.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;

procedure backBtn_nMouseLeave(Sender: TObject);
begin
  F:= ExpandConstant("{tmp}\backBtn1.bmp");
  backBtn.Bitmap.LoadFromFile(F);
end;




function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpWelcome then
  result := true;
if PageID=wpFinished then
  result := true;
end;

procedure InitializeWizard();
begin
//WizardForm.Width:=482;
//WizardForm.Height:=302;
WizardForm.Width:=587;
WizardForm.Height:=437;
WizardForm.BorderStyle:=bsNone; //去边框
ExtractTemporaryFile("window.bmp");
ExtractTemporaryFile("window2.bmp");
ExtractTemporaryFile("Close1.bmp");
ExtractTemporaryFile("Close2.bmp");
ExtractTemporaryFile("Close3.bmp");
ExtractTemporaryFile("btnIn1.bmp");
ExtractTemporaryFile("btnIn2.bmp");
ExtractTemporaryFile("btnIn3.bmp");
ExtractTemporaryFile("installer.ico");
//按键
ExtractTemporaryFile("DirImg.bmp");
ExtractTemporaryFile("btn_by1.bmp");
ExtractTemporaryFile("btn_by2.bmp");
ExtractTemporaryFile("btn_by3.bmp");
ExtractTemporaryFile("btn_n1.bmp");
ExtractTemporaryFile("btn_n2.bmp");
ExtractTemporaryFile("btn_n3.bmp");
ExtractTemporaryFile("btn_ss1.bmp");
ExtractTemporaryFile("btn_ss2.bmp");
ExtractTemporaryFile("btn_ss3.bmp");
ExtractTemporaryFile("backBtn1.bmp");
ExtractTemporaryFile("backBtn2.bmp");
ExtractTemporaryFile("backBtn3.bmp");


WizardFormImage := TBitmapImage.Create(WizardForm);
WizardFormImage.Parent := WizardForm;
WizardFormImage.Align := alClient;  //图片拉伸
//WizardFormImage.SendToBack;  //显示底部横线
WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
WizardFormImage.OnMouseDown:=@WizardFormMouseDown; 
//透明
//SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
//SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)

//体系托盘
  Ico := LoadImage(0, ExpandConstant("{tmp}\face.ico"), IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
  InitTrayIconCtrl(MainForm.Handle, WizardForm.Handle,
             WM_ICON_NOTIFY,   // 自定义自己的资讯 ID, 以辨别其他资讯
             CustomMessage("Tooltip"),  // Tooltip 鼠标在 TrayIcon 图标上移动的时候显示的提醒
             Ico,              // 这里默许应用安装程序图标
             True,             // 立即显示, 不用调用 ShowTrayIcon
             False,            // 不显示安装程序的义务栏按钮
             CustomMessage("MenuStrs"),               // 不树立托盘图标菜单
             0,               // 没有默许菜单项
             @TrayMenuItemOnClick,              // 没有菜单点击事件
             @TrayMenuOnPopup,              // 没有菜单弹失事件
             nil               // 没有自定义托盘图标事件
             );

  // 显示漫画型气泡提醒
  ShowBalloon(CustomMessage("TooltipText"), CustomMessage("Tooltip"), NIIF_INFO, 10, False);



//关闭按钮
CloseBtn := TBitmapImage.Create(WizardForm);
CloseBtn.ShowHint := True;
CloseBtn.Cursor := crHand;
CloseBtn.OnMouseDown := @CloseBtnOnMouseDown;
CloseBtn.OnMouseUp := @CloseBtnOnMouseUp;
CloseBtn.OnMouseEnter := @CloseBtnOnMouseEnter;
CloseBtn.OnMouseLeave := @CloseBtnOnMouseLeave;
CloseBtn.Parent := WizardForm;
CloseBtn.Width := 22
CloseBtn.Height := 22
CloseBtn.Left := 454+108;
CloseBtn.Top := 3;
CloseBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\Close1.bmp"));
CloseBtn.OnClick:= @CloseBtnOnClick;


//自定义安装按钮
zdyianZhuangImage := TBitmapImage.Create(WizardForm);
zdyianZhuangImage.ShowHint := True;
zdyianZhuangImage.Cursor := crHand;
zdyianZhuangImage.Parent := WizardForm;
zdyianZhuangImage.Width := 91;
zdyianZhuangImage.Height := 14;
zdyianZhuangImage.Left := WizardForm.Width - 91 - 20;
zdyianZhuangImage.Top := WizardForm.Height - 30;
zdyianZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_n1.bmp"));
zdyianZhuangImage.OnClick:=@setting;
zdyianZhuangImage.OnMouseDown := @btn_ndown;
zdyianZhuangImage.OnMouseUp:=@btn_nup;
zdyianZhuangImage.OnMouseEnter := @btn_nys;
zdyianZhuangImage.OnMouseLeave := @btn_nMouseLeave;

//迅速安装ksuanZhuangImage
ksuanZhuangImage := TBitmapImage.Create(WizardForm);
ksuanZhuangImage.ShowHint := True;
ksuanZhuangImage.Cursor := crHand;
ksuanZhuangImage.Parent := WizardForm;
ksuanZhuangImage.Width := 210;
ksuanZhuangImage.Height := 59;
ksuanZhuangImage.Left := (WizardForm.Width - 210)/2;
ksuanZhuangImage.Top := WizardForm.Height/3*2+20;
ksuanZhuangImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_ss1.bmp"));
ksuanZhuangImage.OnClick:=@en;
ksuanZhuangImage.OnMouseDown := @btns_ndown;
ksuanZhuangImage.OnMouseUp:=@btns_nup;
ksuanZhuangImage.OnMouseEnter := @btns_nys;
ksuanZhuangImage.OnMouseLeave := @btns_nMouseLeave;




//安装按钮
NextButton := TBitmapImage.Create(WizardForm);
NextButton.ShowHint := True;
NextButton.Cursor := crHand;
//NextButton.Parent := WizardForm;
NextButton.Width := 95;
NextButton.Height := 30;
NextButton.Left := WizardForm.Width - 91 - 100;
NextButton.Top := WizardForm.Height -(16 + 30);
NextButton.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btnIn1.bmp"));
NextButton.OnClick:= @en;
NextButton.OnMouseDown := @fdown;
NextButton.OnMouseUp:=@fup;
NextButton.OnMouseEnter := @fs;
NextButton.OnMouseLeave := @BitmapImage1MouseLeave;

//返回按钮
backBtn := TBitmapImage.Create(WizardForm);
backBtn.ShowHint := True;
backBtn.Cursor := crHand;
//backBtn.Parent := WizardForm;
backBtn.Width := 64;
backBtn.Height := 29;
backBtn.Left := NextButton.Left + 95 +10 ;
backBtn.Top := NextButton.Top;
backBtn.Bitmap.LoadFromFile(ExpandConstant("{tmp}\backBtn1.bmp"));
backBtn.OnClick:= @settingbcbtn;
backBtn.OnMouseDown := @backBtn_ndown;
backBtn.OnMouseUp:=@backBtn_nup;
backBtn.OnMouseEnter := @backBtn_nys;
backBtn.OnMouseLeave := @backBtn_nMouseLeave;



                                                                                              
//setbtn := TLabel.Create(WizardForm);
//setbtn.Parent := WizardForm;
//setbtn.Font.Name := "微软雅黑";
//setbtn.Font.Size := 9
//setbtn.Font.Color := $0075FFDD;
//setbtn.Font.Style := [fsUnderline];
//setbtn.Transparent := True;
//setbtn.Cursor:= MyCursor2;
//setbtn.AutoSize := True;
//setbtn.WordWrap := True;
//setbtn.OnClick :=@setting;
//setbtn.Caption := ExpandConstant("高等选项");
//setbtn.SetBounds(ScaleX(20), ScaleY(WizardForm.Top + 120), 50, ScaleY(16));

//setbcbtn := TLabel.Create(WizardForm);
//setbcbtn.Parent := WizardForm;
//setbcbtn.Font.Name := "微软雅黑";
//setbcbtn.Font.Size := 9
//setbcbtn.Font.Color := $0075FFDD;
//setbcbtn.Font.Style := [fsUnderline];
//setbcbtn.Transparent := True;
//setbcbtn.Cursor:= MyCursor2;
//setbcbtn.AutoSize := True;
//setbcbtn.WordWrap := True;
//setbcbtn.OnClick :=@settingbcbtn;
//setbcbtn.Caption := ExpandConstant("返回安装");
//setbcbtn.SetBounds(setbtn.left, setbtn.top, 50, ScaleY(16));

//WizardForm
WizardForm.OuterNotebook.Hide;
WizardForm.BeveledLabel.Width := 0
WizardForm.BeveledLabel.Height := 0
//CancelButton
WizardForm.CancelButton.Width:= 0
WizardForm.CancelButton.Height:= 0
//BackButton
WizardForm.BackButton.Width:= 0
WizardForm.BackButton.Height:= 0
//NextButton
WizardForm.NextButton.Width:= 0
WizardForm.NextButton.Height:= 0

//大标签
bigLabel := TLabel.Create(WizardForm);
bigLabel.Parent := WizardForm;
//bigLabel.Font.Name := "微软雅黑";
bigLabel.Font.Name := "Microsoft YaHei";
bigLabel.Font.Size := 20
bigLabel.Font.Style := [fsBold];
bigLabel.Font.Color := clWhite;
bigLabel.Transparent := True;
bigLabel.AutoSize := True;
bigLabel.SetBounds(ScaleX(10), ScaleY(25), ScaleY(300), ScaleY(30));
bigLabel.Caption := "{#MyAppName} 安装包"
bigLabel.Show;

//安装版本
sversion := TLabel.Create(WizardForm);
sversion.Parent := WizardForm;
//sversion.Font.Name := "微软雅黑";
sversion.Font.Name := "Microsoft YaHei";

sversion.Font.Size := 9
sversion.Font.Style := [fsBold];
sversion.Font.Color := clWhite;
sversion.Transparent := True;
sversion.AutoSize := False;
sversion.SetBounds(ScaleX(10), ScaleY(75), ScaleY(300), ScaleY(16));
sversion.Caption := "安装版本:0001.0000.0001.0002"



//添加桌面快捷方法复选框
TaskBox1 := TCheckBox.Create(WizardForm);
TaskBox1.Parent := WizardForm;
TaskBox1.Left := (WizardForm.Width - 446 - 94)/2;
TaskBox1.Top := ScaleY(413);
TaskBox1.Width := ScaleY(13);
TaskBox1.Height := ScaleY(13);
TaskBox1.Checked := True;
TaskBox1Label := TLabel.Create(WizardForm);
TaskBox1Label.Parent := WizardForm; //地位
TaskBox1Label.Caption := "创立桌面快捷方法";  //控件文字  "#13"
TaskBox1Label.WordWrap := True;
TaskBox1Label.Font.Name := "宋体";
TaskBox1Label.Font.Size := 9  //字体大小
TaskBox1Label.Font.Color := $00000000; //控件文字色彩
TaskBox1Label.Font.Style := []
TaskBox1Label.Transparent := True; //控件透显著示
TaskBox1Label.Left := TaskBox1.Left + TaskBox1.Width + 3//ScaleX(0);
TaskBox1Label.Top := TaskBox1.Top + 1;
TaskBox1Label.Width := 100
TaskBox1Label.Height := TaskBox1.Height;
TaskBox1Label.OnClick := @TaskBox1LabelOnClick;

//--------------------------------------
//目录阅读框
dirviewImage := TBitmapImage.Create(WizardForm);
dirviewImage.ShowHint := True;
dirviewImage.Cursor := crHand;
dirviewImage.Parent := WizardForm;
dirviewImage.Width := 446
dirviewImage.Height := 36
dirviewImage.Left := TaskBox1.Left;
dirviewImage.Top := WizardForm.Top -20;
dirviewImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\DirImg.bmp"));

//阅读按钮
dirCooseImage := TBitmapImage.Create(WizardForm);
dirCooseImage.ShowHint := True;
dirCooseImage.Cursor := crHand;
dirCooseImage.Parent := WizardForm;
dirCooseImage.Width := 94;
dirCooseImage.Height := 36;
dirCooseImage.Left := dirviewImage.Left + 446;
dirCooseImage.Top := dirviewImage.Top;
dirCooseImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\btn_by1.bmp"));
dirCooseImage.OnClick:= @NewDirBrowseButtonClick;
dirCooseImage.OnMouseDown := @btn_bydown;
dirCooseImage.OnMouseUp:=@btn_byup;
dirCooseImage.OnMouseEnter := @btn_bys;
dirCooseImage.OnMouseLeave := @btn_byMouseLeave;


//安装目录
NewLabel := TLabel.Create(WizardForm);
NewLabel.Parent := WizardForm;
NewLabel.Font.Name := "宋体";
NewLabel.Font.Size := 9
NewLabel.Font.Color := $00000000;
NewLabel.Font.Style := []
NewLabel.Transparent := True;
NewLabel.AutoSize := False;
NewLabel.WordWrap := True;
NewLabel.Left := ScaleX(dirviewImage.Left);
NewLabel.Top := ScaleY(dirviewImage.Top - 5);
NewLabel.Width := WizardForm.Width - ScaleX(40);
NewLabel.Height := ScaleY(14);


//文字路径
NewDirEdit:=TLabel.Create(WizardForm);
NewDirEdit.Parent:=WizardForm;
NewDirEdit.Transparent:=True;
NewDirEdit.Left:=30;
NewDirEdit.Top:=dirviewImage.top+9;
NewDirEdit.Font.Style := [fsBold];
//NewDirEdit.Font.Color := $0075FFDD;
NewDirEdit.Font.Color := $00000000;
//NewDirEdit.WordWrap := true;
NewDirEdit.Width:= 446;
//NewDirEdit.Cursor:= MyCursor2;
//NewDirEdit.OnClick := @NewDirBrowseButtonClick;
NewDirEdit.hide;




//添加开端菜单程序组快捷方法
TaskBox3 := TCheckBox.Create(WizardForm);
TaskBox3.Parent := WizardForm;
TaskBox3.Left := TaskBox1.Left;
TaskBox3.Top := TaskBox1.Top + ScaleY(25);
TaskBox3.Width := TaskBox1.Width
TaskBox3.Height := TaskBox1.Height
TaskBox3.Checked := True;
TaskBox3Label := TLabel.Create(WizardForm);
TaskBox3Label.Parent := WizardForm; //地位
TaskBox3Label.Caption := "创立开端菜单程序组快捷方法";
TaskBox3Label.WordWrap := True;
TaskBox3Label.Font.Name := "宋体";
TaskBox3Label.Font.Size := 9  //字体大小
TaskBox3Label.Font.Color := $00000000; //控件文字色彩
TaskBox3Label.Font.Style := []
TaskBox3Label.Transparent := True; //控件透显著示
TaskBox3Label.Left := TaskBox3.Left + TaskBox3.Width + 3//ScaleX(0);
TaskBox3Label.Top := TaskBox3.Top + 1;
TaskBox3Label.Width := 100;
TaskBox3Label.Height := TaskBox3.Height;
TaskBox3Label.OnClick := @TaskBox3LabelOnClick;
//NewStatusLabel
NewStatusLabel := TLabel.Create(WizardForm);
NewStatusLabel.Parent := WizardForm;  //地位
NewStatusLabel.Font.Size := 9  //字体大小
NewStatusLabel.Font.Color := clWhite; //控件文字色彩
NewStatusLabel.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
NewStatusLabel.Transparent := True; //控件透显著示
NewStatusLabel.Left := 20
NewStatusLabel.Top := 275;
NewStatusLabel.Width := NewLabel.Width;
NewStatusLabel.Height := ScaleY(14);
//安装百分比
ProgressLabel := TLabel.Create(WizardForm);
ProgressLabel.Top := 255;
ProgressLabel.Left:= 20;
ProgressLabel.Font.Color :=clWhite;
ProgressLabel.AutoSize := True;
ProgressLabel.Transparent := True;
ProgressLabel.Parent := WizardForm;
//ProgressGauge
WizardForm.ProgressGauge.Left:=NewLabel.Left;
WizardForm.ProgressGauge.Top:=NewStatusLabel.Top + NewStatusLabel.Height + 5;
WizardForm.ProgressGauge.Width:=NewLabel.Width;
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Min:=0
WizardForm.ProgressGauge.Max:=100
WizardForm.ProgressGauge.Parent := WizardForm;
//安装细节
//DetaList
DetaList := TNewListBox.Create(WizardForm);
DetaList.Parent := WizardForm;
DetaList.Left := 275;
DetaList.Top := 20;
DetaList.Width := NewLabel.Width;
DetaList.Height := ScaleY(188);
DetaList.TabOrder := ScaleY(4);
DetaList.Visible := False;  //  True默许不显示
DetaList.Color := $00FAF7F2 //细节框色彩
//ShowDetaBtn
ShowDetaBtn := TNewButton.Create(WizardForm);
ShowDetaBtn.Parent := WizardForm;
ShowDetaBtn.Left := DetaList.Left
ShowDetaBtn.Top := DetaList.Top;
ShowDetaBtn.Width := ScaleX(75);
ShowDetaBtn.Height := ScaleY(22);
ShowDetaBtn.Caption := "显示细节(&D)";
ShowDetaBtn.TabOrder := ScaleY(3);
ShowDetaBtn.Visible := True;  // False默许显示
ShowDetaBtn.OnClick := @ShowDetaBtnOnClick;
//FinishedLabel3
FinishedLabel3 := TLabel.Create(WizardForm);
FinishedLabel3.Parent := WizardForm;  //地位
FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}");  //控件文字  "#13"
FinishedLabel3.WordWrap := True;
FinishedLabel3.Font.Name := "宋体";
FinishedLabel3.Font.Size := 9  //字体大小
FinishedLabel3.Font.Color := clWhite; //控件文字色彩
FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
FinishedLabel3.Transparent := True; //控件透显著示
FinishedLabel3.Left := ScaleX(60);
FinishedLabel3.Top := ScaleY(100);
FinishedLabel3.Width := ScaleY(435);
FinishedLabel3.Font.Style := [fsBold];
FinishedLabel3.OnMouseDown:=@WizardFormMouseDown;
//程序1
RunBox1 := TCheckBox.Create(WizardForm);
RunBox1.Parent := WizardForm;
RunBox1.Left := FinishedLabel3.Left;
RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30);
RunBox1.Width := ScaleY(13);
RunBox1.Height := ScaleY(13);
RunBox1.Checked := false//True;
RunBox1Label := TLabel.Create(WizardForm);
RunBox1Label.Parent := WizardForm; //地位
RunBox1Label.Caption := "立即启动酷狗7";  //控件文字  "#13"
RunBox1Label.WordWrap := True;
RunBox1Label.Font.Name := "宋体";
RunBox1Label.Font.Size := 9  //字体大小
RunBox1Label.Font.Color := clWhite; //控件文字色彩
RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline];  //控件作风:粗体、斜体、下划线
RunBox1Label.Transparent := True; //控件透显著示
RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0);
RunBox1Label.Top := RunBox1.Top + 1;
RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3;
RunBox1Label.Height := ScaleY(50);
RunBox1Label.OnClick := @RunBox1LabelOnClick;

dirviewImage.Hide;
NewLabel.hide;
NextButton.Hide;
dirCooseImage.Hide;
NewLabel.Hide;
end;

//安装细节
procedure AddToDetaList;
begin
NewStatusLabel.Caption := "抽取:  " + ExtractFileName(CurrentFileName)  //仅显示文件名称
DetaList.Items.Append("抽取:  " + ExtractFileName(CurrentFileName));
//转动
DetaList.ItemIndex := DetaList.Items.Count - 1;
end;

function StatusMsg(MyMsg: string): Boolean;
begin
Result:= True;
NewStatusLabel.Caption:= MyMsg;
end;

procedure Progress();
begin
//安装百分比
ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%";
if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then
    begin
    ProgressLabel.Caption:= IntToStr(99) + "%";
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//    Notice.hide

    NewLabel.hide
    TaskBox1.hide
    TaskBox1Label.hide
//    TaskBox2.hide
//    TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewStatusLabel.hide
    ProgressLabel.hide
    WizardForm.ProgressGauge.hide
    DetaList.hide
    ShowDetaBtn.hide
    FinishedLabel3.hide
    RunBox1.hide
    RunBox1Label.hide
    NextButton.hide
    //setbcbtn.hide
    NewDirEdit.hide
    bigLabel.hide
    sversion.hide
    //setbtn.hide
  if CurPageID = wpWelcome then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
//    Notice.show
    end;
  if CurPageID = wpSelectDir then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NextButton.show
    NewLabel.show
    NewLabel.Font.Style := [fsBold];
    TaskBox1.hide
    TaskBox1Label.hide
   //TaskBox2.hide
   // TaskBox2Label.hide
    TaskBox3.hide
    TaskBox3Label.hide
    NewDirEdit.show
    bigLabel.show
    sversion.show
    //setbtn.show
    end;
  if CurPageID = wpInstalling then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    NewStatusLabel.show
    ProgressLabel.show
    WizardForm.ProgressGauge.hide
    ShowDetaBtn.hide
    bigLabel.show
    sversion.show
    //---------------
    //目录阅读框
    dirviewImage.Hide;
    //选择目录
    dirCooseImage.Hide;
    //自定义安装
    zdyianZhuangImage.Hide;
    //迅速安装
    ksuanZhuangImage.Hide;
    //返回
    backBtn.Hide;
    end;
    if CurPageID = wpFinished then
    begin
    WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp"))
    FinishedLabel3.show
    RunBox1.show
    RunBox1Label.show
    end;
end;

//快捷方法
Function desktopicon(): Boolean;
begin
  if TaskBox1.Checked = True then     //当TaskBox1选中时,履行操作
  Result := TaskBox1.Checked;
  
end;

Function quicklaunchicon(): Boolean;
begin
  if TaskBox2.Checked = True then     //当TaskBox2选中时,履行操作
  Result := TaskBox2.Checked;
end;

Function groupicon(): Boolean;
begin
  if TaskBox3.Checked = True then     //当TaskBox3选中时,履行操作
  Result := TaskBox3.Checked;
end;

procedure DeinitializeSetup();
begin
MainForm.Hide;
WizardForm.Hide;
UninitTrayIconCtrl();
end;

//安装停止,点"完成"以后运行程序
//procedure CurStepChanged(CurStep: TSetupStep);
//var
//RCode: Integer;
//begin
////程序1
//if (CurStep=ssDone) and (RunBox1.Checked) then
//Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
////程序2
////if (CurStep=ssDone) and (RunBox2.Checked) then
////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode);
//end;

一些须要注意的处所:

1、inno setup 的版本是不是支撑字体不同分辩率的适配。

2、在非中文体系上是不是会造成乱码。

3、360是不是会报毒或高风险。

4、笼罩安装的时候是不是提醒。

5、是不是许可同时许可多个安装包。

6、安装时如果程序正在运行要进行提醒。

FAF7F2 //细节框色彩 //ShowDetaBtn ShowDetaBtn := TNewButton.Create(WizardForm); ShowDetaBtn.Parent := WizardForm; ShowDetaBtn.Left := DetaList.Left ShowDetaBtn.Top := DetaList.Top; ShowDetaBtn.Width := ScaleX(75); ShowDetaBtn.Height := ScaleY(22); ShowDetaBtn.Caption := "显示细节(&D)"; ShowDetaBtn.TabOrder := ScaleY(3); ShowDetaBtn.Visible := True; // False默许显示 ShowDetaBtn.OnClick := @ShowDetaBtnOnClick; //FinishedLabel3 FinishedLabel3 := TLabel.Create(WizardForm); FinishedLabel3.Parent := WizardForm; //地位 FinishedLabel3.Caption := ExpandConstant("{cm:FinishedHeadingLabel}"); //控件文字 "#13" FinishedLabel3.WordWrap := True; FinishedLabel3.Font.Name := "宋体"; FinishedLabel3.Font.Size := 9 //字体大小 FinishedLabel3.Font.Color := clWhite; //控件文字色彩 FinishedLabel3.Font.Style := []//[fsBold, fsItalic, fsUnderline]; //控件作风:粗体、斜体、下划线 FinishedLabel3.Transparent := True; //控件透显著示 FinishedLabel3.Left := ScaleX(60); FinishedLabel3.Top := ScaleY(100); FinishedLabel3.Width := ScaleY(435); FinishedLabel3.Font.Style := [fsBold]; FinishedLabel3.OnMouseDown:=@WizardFormMouseDown; //程序1 RunBox1 := TCheckBox.Create(WizardForm); RunBox1.Parent := WizardForm; RunBox1.Left := FinishedLabel3.Left; RunBox1.Top := FinishedLabel3.Top + FinishedLabel3.Height + ScaleY(30); RunBox1.Width := ScaleY(13); RunBox1.Height := ScaleY(13); RunBox1.Checked := false//True; RunBox1Label := TLabel.Create(WizardForm); RunBox1Label.Parent := WizardForm; //地位 RunBox1Label.Caption := "立即启动酷狗7"; //控件文字 "#13" RunBox1Label.WordWrap := True; RunBox1Label.Font.Name := "宋体"; RunBox1Label.Font.Size := 9 //字体大小 RunBox1Label.Font.Color := clWhite; //控件文字色彩 RunBox1Label.Font.Style := []//[fsBold, fsItalic, fsUnderline]; //控件作风:粗体、斜体、下划线 RunBox1Label.Transparent := True; //控件透显著示 RunBox1Label.Left := RunBox1.Left + RunBox1.Width + 3//ScaleX(0); RunBox1Label.Top := RunBox1.Top + 1; RunBox1Label.Width := FinishedLabel3.Width - RunBox1.Width - 3; RunBox1Label.Height := ScaleY(50); RunBox1Label.OnClick := @RunBox1LabelOnClick; dirviewImage.Hide; NewLabel.hide; NextButton.Hide; dirCooseImage.Hide; NewLabel.Hide; end; //安装细节 procedure AddToDetaList; begin NewStatusLabel.Caption := "抽取: " + ExtractFileName(CurrentFileName) //仅显示文件名称 DetaList.Items.Append("抽取: " + ExtractFileName(CurrentFileName)); //转动 DetaList.ItemIndex := DetaList.Items.Count - 1; end; function StatusMsg(MyMsg: string): Boolean; begin Result:= True; NewStatusLabel.Caption:= MyMsg; end; procedure Progress(); begin //安装百分比 ProgressLabel.Caption:= IntToStr((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)) + "%"; if((WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min)/((WizardForm.ProgressGauge.Max - WizardForm.ProgressGauge.Min)/101)>=100) then begin ProgressLabel.Caption:= IntToStr(99) + "%"; end; end; procedure CurPageChanged(CurPageID: Integer); begin // Notice.hide NewLabel.hide TaskBox1.hide TaskBox1Label.hide // TaskBox2.hide // TaskBox2Label.hide TaskBox3.hide TaskBox3Label.hide NewStatusLabel.hide ProgressLabel.hide WizardForm.ProgressGauge.hide DetaList.hide ShowDetaBtn.hide FinishedLabel3.hide RunBox1.hide RunBox1Label.hide NextButton.hide //setbcbtn.hide NewDirEdit.hide bigLabel.hide sversion.hide //setbtn.hide if CurPageID = wpWelcome then begin WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp")) // Notice.show end; if CurPageID = wpSelectDir then begin WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp")) NextButton.show NewLabel.show NewLabel.Font.Style := [fsBold]; TaskBox1.hide TaskBox1Label.hide //TaskBox2.hide // TaskBox2Label.hide TaskBox3.hide TaskBox3Label.hide NewDirEdit.show bigLabel.show sversion.show //setbtn.show end; if CurPageID = wpInstalling then begin WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp")) NewStatusLabel.show ProgressLabel.show WizardForm.ProgressGauge.hide ShowDetaBtn.hide bigLabel.show sversion.show //--------------- //目录阅读框 dirviewImage.Hide; //选择目录 dirCooseImage.Hide; //自定义安装 zdyianZhuangImage.Hide; //迅速安装 ksuanZhuangImage.Hide; //返回 backBtn.Hide; end; if CurPageID = wpFinished then begin WizardFormImage.Bitmap.LoadFromFile(ExpandConstant("{tmp}\window.bmp")) FinishedLabel3.show RunBox1.show RunBox1Label.show end; end; //快捷方法 Function desktopicon(): Boolean; begin if TaskBox1.Checked = True then //当TaskBox1选中时,履行操作 Result := TaskBox1.Checked; end; Function quicklaunchicon(): Boolean; begin if TaskBox2.Checked = True then //当TaskBox2选中时,履行操作 Result := TaskBox2.Checked; end; Function groupicon(): Boolean; begin if TaskBox3.Checked = True then //当TaskBox3选中时,履行操作 Result := TaskBox3.Checked; end; procedure DeinitializeSetup(); begin MainForm.Hide; WizardForm.Hide; UninitTrayIconCtrl(); end; //安装停止,点"完成"以后运行程序 //procedure CurStepChanged(CurStep: TSetupStep); //var //RCode: Integer; //begin ////程序1 //if (CurStep=ssDone) and (RunBox1.Checked) then //Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode); ////程序2 ////if (CurStep=ssDone) and (RunBox2.Checked) then ////Exec(ExpandConstant("{app}\MyProg.exe"), "", "", SW_SHOW, ewNoWait, RCode); //end; ;#define MyAppId "{{01DDF602-7CF8-40C9-816F-A




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: