add demo
This commit is contained in:
70
InnoSetupBeauty01/include/DllsImport.iss
Normal file
70
InnoSetupBeauty01/include/DllsImport.iss
Normal file
@@ -0,0 +1,70 @@
|
||||
[Code]
|
||||
// for dll
|
||||
type
|
||||
TBtnEventProc = procedure (h:HWND);
|
||||
TPBProc = function(h:hWnd;Msg,wParam,lParam:Longint):Longint; //百分比
|
||||
TTimerProc = procedure(h:longword; msg:longword; idevent:longword; dwTime:longword);
|
||||
const
|
||||
Radius = 9;
|
||||
GWL_EXSTYLE = (-20);
|
||||
//窗口移动
|
||||
WM_SYSCOMMAND = $0112;
|
||||
WS_EX_LAYERED = $80000;
|
||||
WS_EX_TRANSPARENT = $20;
|
||||
LWA_COLORKEY = 1;
|
||||
TransparentColor = clLime; //要去掉的图片底色
|
||||
TransparentPercent = 80;
|
||||
BTN_MAX_PATH = 1024;
|
||||
|
||||
BtnClickEventID = 1;
|
||||
BtnMouseEnterEventID = 2;
|
||||
BtnMouseLeaveEventID = 3;
|
||||
BtnMouseMoveEventID = 4;
|
||||
BtnMouseDownEventID = 5;
|
||||
BtnMouseUpEventID = 6;
|
||||
|
||||
//function WrapBtnCallback(Callback: TBtnEventProc; ParamCount: Integer): Longword; external 'wrapcallback@files:innocallback.dll stdcall';
|
||||
function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): Longword; external 'wrapcallback@files:innocallback.dll stdcall';
|
||||
|
||||
function DeleteObject(p1: Longword): BOOL; external 'DeleteObject@gdi32.dll stdcall';
|
||||
function GetPM(nIndex:Integer):Integer; external 'GetSystemMetrics@user32.dll stdcall';
|
||||
//botva2
|
||||
function ImgLoad(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean) :Longint; external 'ImgLoad@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure ImgSetVisibility(img :Longint; Visible :boolean); external 'ImgSetVisibility@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure ImgApplyChanges(h:HWND); external 'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure ImgSetPosition(img :Longint; NewLeft, NewTop, NewWidth, NewHeight :integer); external 'ImgSetPosition@files:botva2.dll stdcall';
|
||||
procedure ImgRelease(img :Longint); external 'ImgRelease@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure gdipShutdown; external 'gdipShutdown@{tmp}\botva2.dll stdcall delayload';
|
||||
function WrapBtnCallback(Callback: TBtnEventProc; ParamCount: Integer): Longword; external 'wrapcallback@{tmp}\innocallback.dll stdcall delayload';
|
||||
function BtnCreate(hParent:HWND; Left,Top,Width,Height:integer; FileName:PAnsiChar; ShadowWidth:integer; IsCheckBtn:boolean):HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetText(h:HWND; Text:PAnsiChar); external 'BtnSetText@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetVisibility(h:HWND; Value:boolean); external 'BtnSetVisibility@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetFont(h:HWND; Font:Cardinal); external 'BtnSetFont@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetFontColor(h:HWND; NormalFontColor, FocusedFontColor, PressedFontColor, DisabledFontColor: Cardinal); external 'BtnSetFontColor@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetEvent(h:HWND; EventID:integer; Event:Longword); external 'BtnSetEvent@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetCursor(h:HWND; hCur:Cardinal); external 'BtnSetCursor@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetEnabled(h:HWND; Value:boolean); external 'BtnSetEnabled@{tmp}\botva2.dll stdcall delayload';
|
||||
function GetSysCursorHandle(id:integer):Cardinal; external 'GetSysCursorHandle@{tmp}\botva2.dll stdcall delayload';
|
||||
function BtnGetChecked(h:HWND):boolean; external 'BtnGetChecked@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetChecked(h:HWND; Value:boolean); external 'BtnSetChecked@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure CreateFormFromImage(h:HWND; FileName:PAnsiChar); external 'CreateFormFromImage@{tmp}\botva2.dll stdcall delayload';
|
||||
procedure BtnSetPosition(h:HWND; NewLeft, NewTop, NewWidth, NewHeight: integer); external 'BtnSetPosition@{tmp}\botva2.dll stdcall delayload';
|
||||
function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint;
|
||||
external 'SetLayeredWindowAttributes@user32 stdcall'; //函数声明
|
||||
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
|
||||
function PBCallBack(P:TPBProc;ParamCount:integer):LongWord; external 'wrapcallback@files:innocallback.dll stdcall';
|
||||
function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint; external 'CallWindowProcA@user32.dll stdcall';
|
||||
procedure ImgSetVisiblePart(img:Longint; NewLeft, NewTop, NewWidth, NewHeight : integer); external 'ImgSetVisiblePart@files:botva2.dll stdcall';
|
||||
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
|
||||
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';
|
||||
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
|
||||
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';
|
||||
function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): THandle; external 'CreateRoundRectRgn@gdi32 stdcall';
|
||||
function SetWindowRgn(hWnd: HWND; hRgn: THandle; bRedraw: Boolean): Integer; external 'SetWindowRgn@user32 stdcall';
|
||||
procedure ShapeForm(aForm: TForm; edgeSize: integer); //圆角
|
||||
var
|
||||
FormRegion:LongWord;
|
||||
begin
|
||||
FormRegion:=CreateRoundRectRgn(0,0,aForm.Width,aForm.Height,edgeSize,edgeSize);
|
||||
SetWindowRgn(aForm.Handle,FormRegion,True);
|
||||
end;
|
||||
346
InnoSetupBeauty01/include/code.iss
Normal file
346
InnoSetupBeauty01/include/code.iss
Normal file
@@ -0,0 +1,346 @@
|
||||
[Code]
|
||||
#include "DllsImport.iss"
|
||||
|
||||
var
|
||||
BGimg:longint;
|
||||
btnShowLicense,MinBtn,CancelBtn,btnBrowser,btnSetup,btnBack:HWND;
|
||||
isWelcomePage:boolean;
|
||||
pathEdit:tedit;
|
||||
labelReadImg,licenseImg,progressbgImg,PBOldProc,labelAutoRunImg:longint;
|
||||
checkboxLicense,checkboxAutoRun:HWND;
|
||||
licenseRich:TRichEditViewer;
|
||||
DpiScalePctg:integer;
|
||||
CurrentDPI:integer;
|
||||
|
||||
function DpiScale(v:integer):integer;
|
||||
begin
|
||||
Result:=v*DpiScalePctg/1000;
|
||||
end;
|
||||
|
||||
// 安装前强制杀进
|
||||
// 该函数在安装程序初始化时调用,返回False 将中断安装,True则继续安装.程
|
||||
function InitializeSetup(): Boolean;
|
||||
var ErrorCode: Integer;
|
||||
begin
|
||||
ShellExec('open','taskkill.exe','/f /im {#MyAppExeName}','',SW_HIDE,ewNoWait,ErrorCode);
|
||||
ShellExec('open','tskill.exe',' {#MyAppName}','',SW_HIDE,ewNoWait,ErrorCode);
|
||||
result := True;
|
||||
end;
|
||||
|
||||
// 卸载前强制杀进程
|
||||
function InitializeUninstall(): Boolean;
|
||||
var ErrorCode: Integer;
|
||||
begin
|
||||
ShellExec('open','taskkill.exe','/f /im {#MyAppExeName}','',SW_HIDE,ewNoWait,ErrorCode);
|
||||
ShellExec('open','tskill.exe',' {#MyAppName}','',SW_HIDE,ewNoWait,ErrorCode);
|
||||
result := True;
|
||||
end;
|
||||
|
||||
// 向导调用这个事件函数确定是否在所有页或不在一个特殊页 (用PageID 指定) 显示。如果返回True,将跳过该页;如果你返回False,该页被显示。
|
||||
// 注意: 这个事件函数不被wpWelcome、wpPreparing 和wpInstalling 页调用,还有安装程序已经确定要跳过的页也不会调用
|
||||
// wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished
|
||||
function ShouldSkipPage(PageID: Integer): Boolean;
|
||||
begin
|
||||
if PageID=wpLicense then
|
||||
result:=true;
|
||||
if PageID=wpInfoBefore then
|
||||
result:=true;
|
||||
if PageID=wpUserInfo then
|
||||
result:=true;
|
||||
if PageID=wpSelectDir then
|
||||
result:=true;
|
||||
if PageID=wpSelectComponents then
|
||||
result:=true;
|
||||
if PageID=wpSelectProgramGroup then
|
||||
result:=true;
|
||||
if PageID=wpSelectTasks then
|
||||
result:=true;
|
||||
end;
|
||||
|
||||
// 关闭按钮
|
||||
procedure CancelBtnOnClick(hBtn:HWND);
|
||||
begin
|
||||
WizardForm.CancelButton.OnClick(WizardForm);
|
||||
end;
|
||||
|
||||
// 最小化按钮
|
||||
procedure MinBtnOnClick(hBtn:HWND);
|
||||
begin
|
||||
SendMessage(WizardForm.Handle,WM_SYSCOMMAND,61472,0);
|
||||
end;
|
||||
|
||||
// 浏览文件夹按钮
|
||||
procedure btnBrowserclick(hBtn:HWND);
|
||||
begin
|
||||
WizardForm.DirBrowseButton.OnClick(WizardForm);
|
||||
pathEdit.text := WizardForm.DirEdit.text;
|
||||
end;
|
||||
|
||||
// 路径选择器 change
|
||||
procedure pathEditChange(Sender: TObject);
|
||||
begin
|
||||
WizardForm.DirEdit.text:=pathEdit.Text ;
|
||||
end;
|
||||
|
||||
// 立即安装等按钮的操作就是不断地下一步
|
||||
procedure nextSetpBtnClick(hBtn:HWND);
|
||||
begin
|
||||
WizardForm.NextButton.OnClick(WizardForm);
|
||||
end;
|
||||
|
||||
// 安装的进度条
|
||||
function PBProc(h:hWnd;Msg,wParam,lParam:Longint):Longint;
|
||||
var
|
||||
pr,i1,i2 : Extended;
|
||||
w : integer;
|
||||
begin
|
||||
Result:=CallWindowProc(PBOldProc,h,Msg,wParam,lParam);
|
||||
if (Msg=$402) and (WizardForm.ProgressGauge.Position>WizardForm.ProgressGauge.Min) then
|
||||
begin
|
||||
i1:=WizardForm.ProgressGauge.Position-WizardForm.ProgressGauge.Min;
|
||||
i2:=WizardForm.ProgressGauge.Max-WizardForm.ProgressGauge.Min;
|
||||
pr:=i1*100/i2;
|
||||
w:=Round(650*pr/100);
|
||||
ImgSetPosition(progressbgImg,0,DpiScale(320),DpiScale(w),DpiScale(15));
|
||||
ImgSetVisiblePart(progressbgImg,0,0,w,DpiScale(15));
|
||||
ImgApplyChanges(WizardForm.Handle);
|
||||
end;
|
||||
end;
|
||||
|
||||
// 鼠标拖动
|
||||
procedure WizardMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
ReleaseCapture
|
||||
SendMessage(WizardForm.Handle, $0112, $F012, 0)
|
||||
end;
|
||||
|
||||
// 查看 license
|
||||
procedure btnShowLicenseClick(hBtn:HWND);
|
||||
begin
|
||||
if isWelcomePage=true then
|
||||
begin
|
||||
isWelcomePage:=false
|
||||
ImgSetVisibility(licenseImg,true)
|
||||
ImgSetVisibility(BGimg,false)
|
||||
ImgSetVisibility(labelReadImg,false)
|
||||
licenseRich.Height:=DpiScale(295)
|
||||
BtnSetVisibility(checkboxLicense,false)
|
||||
BtnSetVisibility(btnShowLicense,false)
|
||||
BtnSetVisibility(btnSetup,false)
|
||||
BtnSetVisibility(btnBrowser,false)
|
||||
pathEdit.Hide
|
||||
BtnSetVisibility(btnBack,true)
|
||||
end else
|
||||
begin
|
||||
isWelcomePage:=true
|
||||
ImgSetVisibility(BGimg,true)
|
||||
ImgSetVisibility(licenseImg,false)
|
||||
ImgSetVisibility(labelReadImg,true)
|
||||
licenseRich.Height:=0
|
||||
BtnSetVisibility(checkboxLicense,true)
|
||||
BtnSetVisibility(btnShowLicense,true)
|
||||
BtnSetVisibility(btnSetup,true)
|
||||
BtnSetVisibility(btnBrowser,true)
|
||||
pathEdit.show
|
||||
BtnSetVisibility(btnBack,false)
|
||||
end;
|
||||
ImgApplyChanges(WizardForm.Handle)
|
||||
end;
|
||||
|
||||
// 勾选查看 license
|
||||
procedure checkboxLicenseClick(hBtn:HWND);
|
||||
begin
|
||||
if BtnGetChecked(checkboxLicense)=true then
|
||||
begin
|
||||
BtnSetEnabled(btnSetup,true)
|
||||
end else
|
||||
begin
|
||||
BtnSetEnabled(btnSetup,false)
|
||||
end
|
||||
end;
|
||||
|
||||
// 该过程在开始的时候改变向导或者向导页,不要指望使用InitializeSetup函数实现改变向导页的功能,因为InitializeSetup函数触发时向导窗口并不存在。
|
||||
procedure InitializeWizard();
|
||||
var
|
||||
MainLabel: TLabel;
|
||||
begin
|
||||
|
||||
CurrentDPI := WizardForm.Font.PixelsPerInch;
|
||||
DpiScalePctg := 1000* CurrentDPI / 96;
|
||||
// 设置欢迎向导页的尺寸大小
|
||||
WizardForm.OuterNotebook.hide;
|
||||
WizardForm.Bevel.Hide;
|
||||
WizardForm.BorderStyle:=bsnone;
|
||||
WizardForm.Position:=poScreenCenter;
|
||||
// WizardForm.Center;
|
||||
WizardForm.Width:=DpiScale(650);
|
||||
WizardForm.Height:=DpiScale(450);
|
||||
// WizardForm.Color:=clWhite;
|
||||
isWelcomePage:=true;
|
||||
// WizardForm.InnerNotebook.Hide;
|
||||
// wizardform.Color:=TransparentColor;
|
||||
|
||||
// 添加可以拖动窗口的Label
|
||||
MainLabel := TLabel.Create(WizardForm);
|
||||
MainLabel.Parent := WizardForm;
|
||||
MainLabel.AutoSize := False;
|
||||
MainLabel.Left := 0;
|
||||
MainLabel.Top := 0;
|
||||
MainLabel.Width := WizardForm.Width;
|
||||
MainLabel.Height := WizardForm.Height;
|
||||
MainLabel.Caption := '';
|
||||
MainLabel.Transparent := True;
|
||||
MainLabel.OnMouseDown := @WizardMouseDown;
|
||||
|
||||
// 加载资源到 tmp 临时目录
|
||||
ExtractTemporaryFile('bg_welcome.png');
|
||||
ExtractTemporaryFile('bg_installing.png');
|
||||
ExtractTemporaryFile('bg_license.png');
|
||||
ExtractTemporaryFile('bg_finished.png');
|
||||
ExtractTemporaryFile('label_read.png');
|
||||
ExtractTemporaryFile('label_license.png');
|
||||
ExtractTemporaryFile('license.txt');
|
||||
ExtractTemporaryFile('btn_close.png');
|
||||
ExtractTemporaryFile('btn_min.png');
|
||||
ExtractTemporaryFile('btn_back.png');
|
||||
ExtractTemporaryFile('btn_setup.png');
|
||||
ExtractTemporaryFile('btn_browser.png');
|
||||
ExtractTemporaryFile('checkbox.png');
|
||||
ExtractTemporaryFile('btn_complete.png');
|
||||
ExtractTemporaryFile('loading.png');
|
||||
ExtractTemporaryFile('label_autorun.png');
|
||||
|
||||
// 关闭按钮样式
|
||||
CancelBtn:=BtnCreate(WizardForm.Handle,DpiScale(650-10-16),DpiScale(8),DpiScale(16),DpiScale(16),ExpandConstant('{tmp}\btn_close.png'),1,False)
|
||||
BtnSetEvent(CancelBtn,BtnClickEventID,WrapBtnCallback(@CancelBtnOnClick,1));
|
||||
|
||||
// 最小化按钮样式
|
||||
MinBtn:=BtnCreate(WizardForm.Handle,DpiScale(624-10-16),DpiScale(8),DpiScale(16),DpiScale(16),ExpandConstant('{tmp}\btn_min.png'),1,False)
|
||||
BtnSetEvent(MinBtn,BtnClickEventID,WrapBtnCallback(@MinBtnOnClick,1));
|
||||
|
||||
// 立即安装按钮样式
|
||||
btnSetup:=BtnCreate(WizardForm.Handle,DpiScale(195),DpiScale(340),DpiScale(260),DpiScale(44),ExpandConstant('{tmp}\btn_setup.png'),1,False)
|
||||
BtnSetEvent(btnSetup,BtnClickEventID,WrapBtnCallback(@nextSetpBtnClick,1));
|
||||
|
||||
// 返回按钮样式
|
||||
btnBack:=BtnCreate(WizardForm.Handle,DpiScale(285),DpiScale(390),DpiScale(80),DpiScale(32),ExpandConstant('{tmp}\btn_back.png'),1,False)
|
||||
BtnSetEvent(btnBack,BtnClickEventID,WrapBtnCallback(@btnShowLicenseClick,1));
|
||||
BtnSetVisibility(btnBack,false)
|
||||
|
||||
pathEdit:= TEdit.Create(WizardForm);
|
||||
with pathEdit do
|
||||
begin
|
||||
Parent:=WizardForm;
|
||||
text:=WizardForm.DirEdit.text;
|
||||
Font.Name:='宋体'
|
||||
BorderStyle:=bsNone;
|
||||
SetBounds(DpiScale(110),DpiScale(272),DpiScale(340),DpiScale(15))
|
||||
OnChange:=@pathEditChange;
|
||||
TabStop:=false;
|
||||
end;
|
||||
|
||||
// 浏览按钮样式
|
||||
btnBrowser:=BtnCreate(WizardForm.Handle,DpiScale(470),DpiScale(263),DpiScale(80),DpiScale(32),ExpandConstant('{tmp}\btn_browser.png'),1,False)
|
||||
BtnSetEvent(btnBrowser,BtnClickEventID,WrapBtnCallback(@btnBrowserclick,1));
|
||||
|
||||
PBOldProc:=SetWindowLong(WizardForm.ProgressGauge.Handle,-4,PBCallBack(@PBProc,4));
|
||||
|
||||
// 查看 license 的文本区域
|
||||
licenseRich:= TRichEditViewer.Create(WizardForm);
|
||||
with licenseRich do
|
||||
begin
|
||||
Parent:=WizardForm;
|
||||
ReadOnly:=true;
|
||||
SCROLLBARS:=ssVertical;
|
||||
font.Name:='宋体';
|
||||
font.Size:=12;
|
||||
Color:=clWhite;
|
||||
BorderStyle:=bsNone;
|
||||
SetBounds(DpiScale(40),DpiScale(65),DpiScale(570),0)
|
||||
Lines.LoadFromFile(ExpandConstant('{tmp}\license.txt'));
|
||||
TabStop:=false;
|
||||
end;
|
||||
|
||||
ImgApplyChanges(WizardForm.Handle)
|
||||
end;
|
||||
|
||||
// 在新向导页 (由CurPageID 指定) 显示后调用。
|
||||
procedure CurPageChanged(CurPageID: Integer);
|
||||
begin
|
||||
// 默认的流程按钮隐藏掉
|
||||
WizardForm.NextButton.Visible:=false;
|
||||
WizardForm.CancelButton.Height:=0;
|
||||
WizardForm.BackButton.Height:=0;
|
||||
|
||||
if CurPageID=wpWelcome then
|
||||
begin
|
||||
licenseImg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\bg_license.png'),0,0,DpiScale(650),DpiScale(450),true,true);
|
||||
ImgSetVisibility(licenseImg,false)
|
||||
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\bg_welcome.png'),0,0,DpiScale(650),DpiScale(450),true,true);
|
||||
|
||||
// license 提示
|
||||
checkboxLicense:=BtnCreate(WizardForm.Handle,DpiScale(220),DpiScale(400),DpiScale(16),DpiScale(16),ExpandConstant('{tmp}\checkbox.png'),1,true)
|
||||
BtnSetEvent(checkboxLicense,BtnClickEventID,WrapBtnCallback(@checkboxLicenseClick,1))
|
||||
|
||||
// 默认勾选 阅读并同意
|
||||
BtnSetChecked(checkboxLicense,true)
|
||||
labelReadImg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\label_read.png'),DpiScale(243),DpiScale(398),DpiScale(39),DpiScale(20),true,true);
|
||||
btnShowLicense:=BtnCreate(WizardForm.Handle,DpiScale(282),DpiScale(398),DpiScale(65),DpiScale(20),ExpandConstant('{tmp}\label_license.png'),DpiScale(4),false)
|
||||
BtnSetEvent(btnShowLicense,BtnClickEventID,WrapBtnCallback(@btnShowLicenseClick,1))
|
||||
|
||||
WizardForm.Width:=DpiScale(650);
|
||||
WizardForm.Height:=DpiScale(450);
|
||||
WizardForm.Show;
|
||||
end;
|
||||
|
||||
if CurPageID = wpInstalling then
|
||||
begin
|
||||
BtnSetPosition(checkboxLicense,DpiScale(560),DpiScale(421),DpiScale(75),DpiScale(15));
|
||||
pathEdit.Hide;
|
||||
BtnSetVisibility(btnBrowser,false)
|
||||
WizardForm.Height:=DpiScale(450)
|
||||
BtnSetVisibility(btnShowLicense,false);
|
||||
BtnSetVisibility(checkboxLicense,false);
|
||||
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\bg_installing.png'),0,0,DpiScale(650),DpiScale(450),true,true);
|
||||
|
||||
progressbgImg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading.png'),0,DpiScale(320),DpiScale(650),0,True,True);
|
||||
|
||||
BtnSetVisibility(btnSetup,false);
|
||||
end;
|
||||
|
||||
if CurPageID = wpFinished then
|
||||
begin
|
||||
ImgSetVisibility(progressbgImg,false)
|
||||
btnSetup:=BtnCreate(WizardForm.Handle,DpiScale(195),DpiScale(340),DpiScale(260),DpiScale(44),ExpandConstant('{tmp}\btn_complete.png'),1,False)
|
||||
BtnSetEvent(btnSetup,BtnClickEventID,WrapBtnCallback(@nextSetpBtnClick,1));
|
||||
|
||||
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\bg_finished.png'),0,0,DpiScale(650),DpiScale(450),true,true);
|
||||
|
||||
// 是否自动运行
|
||||
checkboxAutoRun:=BtnCreate(WizardForm.Handle,DpiScale(275),DpiScale(400),DpiScale(16),DpiScale(16),ExpandConstant('{tmp}\checkbox.png'),1,true)
|
||||
labelAutoRunImg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\label_autorun.png'),DpiScale(295),DpiScale(398),DpiScale(84),DpiScale(20),true,true);
|
||||
|
||||
// 默认勾选
|
||||
BtnSetChecked(checkboxAutoRun,true);
|
||||
|
||||
// 完成页面隐藏关闭和最小化
|
||||
BtnSetVisibility(CancelBtn,false);
|
||||
BtnSetVisibility(MinBtn,false);
|
||||
end;
|
||||
|
||||
ImgApplyChanges(WizardForm.Handle)
|
||||
end;
|
||||
|
||||
// 该过程在安装终止时被调用,注意及时在用户没有安装任何文件之前退出也会被调用。
|
||||
procedure DeinitializeSetup();
|
||||
var RCode: Integer;
|
||||
begin
|
||||
// 检查是否需要自动运行
|
||||
if BtngetChecked(checkboxAutoRun)=true then
|
||||
begin
|
||||
Exec(ExpandConstant('{app}\{#MyAppExeName}'),'','',SW_SHOW, ewNoWait,RCode);
|
||||
end;
|
||||
|
||||
gdipShutdown;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user