Inno Setup 仿有道云安装包界面
本帖最后由 Share 于 2017-5-5 20:56 编辑#define MyAppName "YNote"
AppName={#MyAppName}
AppVersion=0.0.0.1
AppVerName={#MyAppName}
DefaultDirName={pf}\{#MyAppName}
OutputBaseFilename={#MyAppName}
Versioninfodescription={#MyAppName} 安装程序
versioninfocopyright=Copyright(c) 2016
VersionInfoProductName={#MyAppName}
versioninfoversion=0.0.0.1
SetupIconFile=YNote.ico
UninstallIconFile=YNote.ico
OutputDir=.
Compression=lzma2/ultra64
DisableReadyPage=yes
DisableProgramGroupPage=yes
DirExistsWarning=no
DisableDirPage=yes
SetupAppTitle={#MyAppName} 安装向导
SetupWindowTitle={#MyAppName} 安装向导
//onlyifdoesntexist 仅在文件不存在的时候 安装
Source: tmp\*; DestDir: {tmp}; Flags: dontcopy solidbreak ; Attribs: hidden system
Source: app\*; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
Name: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\有道Haroun\{#MyAppName}\{#MyAppName}; Filename: {app}\YNote.exe; WorkingDir: {app};
//开始菜单快捷方式
Name: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\有道Haroun\{#MyAppName}\卸载 {#MyAppName}; Filename:{uninstallexe}; WorkingDir: {app};
//开始菜单卸载程序
Name: {commondesktop}\{#MyAppName}; Filename: {app}\YNote.exe; WorkingDir: {app};
//桌面快捷方式
#include'dll.iss'
var
label1,label2:TLabel;
pathEditbkg,BGimg:longint;
licenseBtn,MinBtn,CancelBtn,btn_Browser,btn_setup,btn5,btnBack:HWND;
c_btn,xypd:boolean;
pathEdit:tedit;
licenseImg,progressbgImgbk,progressbgImg,PBOldProc:longint;
Timer1: TTimer;
licenseCheck,saveMyDirRadio,saveCustomDirRadio:HWND;
licenseRich:TRichEditViewer;
Function StartMenu(): Boolean;
begin
Result :=BtngetChecked(saveCustomDirRadio)
end;
Function desktop(): Boolean;
begin
Result :=BtngetChecked(saveMyDirRadio)
end;
procedure CancelBtnOnClick(hBtn:HWND);
begin
WizardForm.CancelButton.Click;
end;
procedure MinBtnOnClick(hBtn:HWND);
begin
SendMessage(WizardForm.Handle,WM_SYSCOMMAND,61472,0);
end;
procedure btn5click(hBtn:HWND);
begin
if c_btn then
begin
BtnSetPosition(licenseCheck,22,475,15,15);
BtnSetPosition(licenseBtn,100,475,108,15);
BtnSetPosition(btn5,560,479,75,15);
pathEdit.show;
BtnSetVisibility(btn_Browser,true)
WizardForm.Height:=508
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\bigbg.png'),0,0,650,508,true,true);
c_btn := false
end else
begin
BtnSetPosition(licenseCheck,22,421,15,15);
BtnSetPosition(licenseBtn,100,421,108,15);
BtnSetPosition(btn5,560,421,75,15);
pathEdit.Hide;
BtnSetVisibility(btn_Browser,false)
WizardForm.Height:=450
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\xy.png'),0,0,650,450,false,true);
c_btn := true
end
ImgApplyChanges(WizardForm.Handle)
end;
procedure btn_Browserclick(hBtn:HWND);
begin
WizardForm.DirBrowseButton.Click;
pathEdit.text := WizardForm.DirEdit.text;
end;
procedure pathEditChange(Sender: TObject);
begin
WizardForm.DirEdit.text:=pathEdit.Text ;
end;
procedure check_licenseclick(hBtn:HWND);
begin
if BtnGetChecked(licenseCheck)=true then
begin
BtnSetEnabled(btn_setup,true)
end
else
begin
BtnSetEnabled(btn_setup,false)
end
end;
procedure btn_setupclick(hBtn:HWND);
begin
WizardForm.NextButton.Click;
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,375,w,15);
ImgSetVisiblePart(progressbgImg,0,0,w,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;
var
b1,b2,b3,b4,t1,t2,t3,t4,DHIMG1:Longint;
js1,js2:integer;
procedure Timer1Timer(Sender: TObject); //核心代码 时钟控制动画 需要inno5 增强版 代码.mad8834671
begin
js2:=js2+10; //控制图片透明度
//if js2<650 then
//begin
//ImgSetTransparentEx(t1,t2,t3,t4,-650+js2)
//end
if(js2>650) then //控制图片透明度 计数归零
begin
js2:=0
js1:=js1+1;
end
if js2<650 then
begin
//控制显示图片
if js1=1 then
begin
ImgSetPosition(t1,-650+js2,0,650,374)
// ImgSetVisibilityEx(t1,t2,t3,t4,1,0,0,0)
//ImgSetVisibility(t1,true)
ImgSetVisibility(t2,false)
ImgSetVisibility(t3,false)
ImgSetVisibility(t4,false)
ImgSetVisibility(t1,true)
end
if js1=2 then
begin
ImgSetPosition(t2,-650+js2,0,650,374)
//ImgSetVisibilityEx(t1,t2,t3,t4,0,1,0,0)
ImgSetVisibility(t1,false)
ImgSetVisibility(t3,false)
ImgSetVisibility(t4,false)
ImgSetVisibility(t2,true)
ImgSetVisibility(b1,true)
ImgSetVisibility(b3,false)
ImgSetVisibility(b4,false)
ImgSetVisibility(b2,false)
end
if js1=3 then
begin
ImgSetPosition(t3,-650+js2,0,650,374)
// ImgSetVisibilityEx(t1,t2,t3,t4,0,0,1,0)
ImgSetVisibility(t1,false)
ImgSetVisibility(t2,false)
ImgSetVisibility(t4,false)
ImgSetVisibility(t3,true)
ImgSetVisibility(b1,false)
ImgSetVisibility(b3,false)
ImgSetVisibility(b4,false)
ImgSetVisibility(b2,true)
end
if js1=4 then
begin
ImgSetPosition(t4,-650+js2,0,650,374)
// ImgSetVisibilityEx(t1,t2,t3,t4,0,0,0,1)
ImgSetVisibility(t1,false)
ImgSetVisibility(t2,false)
ImgSetVisibility(t3,false)
ImgSetVisibility(t4,true)
ImgSetVisibility(b1,false)
ImgSetVisibility(b3,true)
ImgSetVisibility(b4,false)
ImgSetVisibility(b2,false)
end
if js1>4 then
begin
ImgSetPosition(t1,-650+js2,0,650,374)
// ImgSetVisibilityEx(t1,t2,t3,t4,1,0,0,0)
ImgSetVisibility(t2,false)
ImgSetVisibility(t3,false)
ImgSetVisibility(t4,false)
ImgSetVisibility(t1,true)
ImgSetVisibility(b1,false)
ImgSetVisibility(b3,false)
ImgSetVisibility(b4,true)
ImgSetVisibility(b2,false)
js1:=1
end
end
//if (js2>260) and (js2<520) then//控制图片透明度
//begin
//ImgSetTransparentEx(t1,t2,t3,t4,js2-255)
//end
ImgApplyChanges(WizardForm.Handle)
end;
procedure locklicenseclick(hBtn:HWND);
begin
if c_btn=false then
begin
BtnSetPosition(licenseCheck,22,421,15,15);
BtnSetPosition(licenseBtn,100,421,108,15);
BtnSetPosition(btn5,560,421,75,15);
pathEdit.Hide;
BtnSetVisibility(btn_Browser,false)
WizardForm.Height:=450
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\xy.png'),0,0,650,450,false,true);
c_btn := true
end
if xypd=true then
begin
licenseImg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\bg_license.png'),0,0,650,450,false,false);
xypd:=false
licenseRich.Height:=321
BtnSetVisibility(licenseCheck,false)
BtnSetVisibility(licenseBtn,false)
BtnSetVisibility(btn5,false)
BtnSetVisibility(btn_setup,false)
BtnSetVisibility(btnBack,true)
end
else
begin
xypd:=true
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\xy.png'),0,0,650,450,false,true);
licenseRich.Height:=0
BtnSetVisibility(licenseCheck,true)
BtnSetVisibility(licenseBtn,true)
BtnSetVisibility(btn5,true)
BtnSetVisibility(btn_setup,true)
ImgRelease(licenseImg)
BtnSetVisibility(btnBack,false)
end
ImgApplyChanges(WizardForm.Handle)
end;
procedure InitializeWizard();
begin
WizardForm.OuterNotebook.hide;
WizardForm.Bevel.Hide;
WizardForm.BorderStyle:=bsnone;
WizardForm.Position:=poDesktopCenter;
WizardForm.Width:=650;
WizardForm.Height:=508;
WizardForm.Color:=clWhite ;
xypd:=true;
WizardForm.OnMouseDown:=@WizardMouseDown
c_btn := true;
ExtractTemporaryFile('bg_license.png');
ExtractTemporaryFile('license.rtf');
ExtractTemporaryFile('btn_n.png');
ExtractTemporaryFile('btn_complete.png');
ExtractTemporaryFile('btn_setup.png');
ExtractTemporaryFile('xy.png');
ExtractTemporaryFile('bigbg.png');
ExtractTemporaryFile('btn_Browser.png');
ExtractTemporaryFile('edit_Browser.png');
ExtractTemporaryFile('loadingbk.png');
ExtractTemporaryFile('loading.png');
ExtractTemporaryFile('license.png');
ExtractTemporaryFile('loading_pic1.png');
ExtractTemporaryFile('loading_pic2.png');
ExtractTemporaryFile('loading_pic3.png');
ExtractTemporaryFile('loading_pic4.png');
ExtractTemporaryFile('checkbox.png');
ExtractTemporaryFile('checkboxdeep.png');
ExtractTemporaryFile('loading_pic.png');
ExtractTemporaryFile('finish_bg.png');
ExtractTemporaryFile('btn_close.png');
ExtractTemporaryFile('btn_min.png');
ExtractTemporaryFile('back.png');
CancelBtn:=BtnCreate(WizardForm.Handle,627,8,17,15,ExpandConstant('{tmp}\btn_close.png'),1,False)
BtnSetEvent(CancelBtn,BtnClickEventID,WrapBtnCallback(@CancelBtnOnClick,1));
MinBtn:=BtnCreate(WizardForm.Handle,607,8,17,15,ExpandConstant('{tmp}\btn_min.png'),1,False)
BtnSetEvent(MinBtn,BtnClickEventID,WrapBtnCallback(@MinBtnOnClick,1));
btn_setup:=BtnCreate(WizardForm.Handle,225,308,199,58,ExpandConstant('{tmp}\btn_setup.png'),1,False)
BtnSetEvent(btn_setup,BtnClickEventID,WrapBtnCallback(@btn_setupclick,1));
btnBack:=BtnCreate(WizardForm.Handle,274,380,102,42,ExpandConstant('{tmp}\back.png'),1,False)
BtnSetEvent(btnBack,BtnClickEventID,WrapBtnCallback(@locklicenseclick,1));
BtnSetVisibility(btnBack,false)
pathEdit:= TEdit.Create(WizardForm);
with pathEdit do
begin
Parent := WizardForm;
text :=WizardForm.DirEdit.text;
Font.Name:='宋体'
BorderStyle:=bsNone;
SetBounds(60,385,440,15)
OnChange:=@pathEditChange;
//Color := $00D0e2ff; cl3dlight
Color := $00FFE2D0
TabStop :=false;
end;
pathEdit.Hide;
//pathEditbkg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\edit_Browser.png'),60,385,500,15,FALSE,true);
//ImgSetVisibility(pathEditbkg,true)
// pathEditbkg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\edit_Browser.png'),95,340,298,24,FALSE,true);
btn_Browser:=BtnCreate(WizardForm.Handle,520,375,82,32,ExpandConstant('{tmp}\btn_Browser.png'),1,False)
BtnSetEvent(btn_Browser,BtnClickEventID,WrapBtnCallback(@btn_Browserclick,1));
BtnSetVisibility(btn_Browser,false)
btn5:=BtnCreate(WizardForm.Handle,560,421,75,15,ExpandConstant('{tmp}\btn_n.png'),1,False)
BtnSetEvent(btn5,BtnClickEventID,WrapBtnCallback(@btn5click,1));
PBOldProc:=SetWindowLong(WizardForm.ProgressGauge.Handle,-4,PBCallBack(@PBProc,4));
Timer1 := TTimer.Create(WizardForm);
with Timer1 do
begin
OnTimer := @Timer1Timer;
end;
js1:=1
js2:=0
licenseRich:= TRichEditViewer.Create(WizardForm);
with licenseRich do
begin
Parent := WizardForm;
ReadOnly:= true;
SCROLLBARS:= ssVertical;
font.Name:='宋体'
Color:=clWhite;
BorderStyle:= bsNone;
SetBounds(42,36,567,187)
Lines.LoadFromFile(ExpandConstant('{tmp}\license.rtf'));
TabStop:=false;
Height := 0;
end;
ImgApplyChanges(WizardForm.Handle)
end;
procedure DeinitializeSetup();
begin
gdipShutdown;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.NextButton.Visible:=false;
WizardForm.CancelButton.Height:=0;
WizardForm.BackButton.Height:=0;
if CurPageID=wpWelcome then
begin
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\xy.png'),0,0,650,450,true,true);
//pathEditbkg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\edit_Browser.png'),60,385,500,15,FALSE,true);
//BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic.png'),0,0,650,450,false,true);
// ImgSetPosition(BGimg,-100,0,650,450);
//ImgSetVisiblePart(progressbgImg,0,0,w,15);
licenseBtn:=BtnCreate(WizardForm.Handle,100,421,108,15,ExpandConstant('{tmp}\license.png'),4,false)
BtnSetEvent(licenseBtn,BtnClickEventID,WrapBtnCallback(@locklicenseclick,1));
licenseCheck:=BtnCreate(WizardForm.Handle,22,421,15,15,ExpandConstant('{tmp}\checkboxdeep.png'),1,true)
BtnSetEvent(licenseCheck,BtnClickEventID,WrapBtnCallback(@check_licenseclick,1));
BtnSetChecked(licenseCheck,true)
WizardForm.Width:=650;
WizardForm.Height:=450;
WizardForm.Show;
end
if CurPageID = wpInstalling then
begin
// ImgSetPosition(progressbgImg,0,400,650,10);
// ImgSetVisiblePart(progressbgImg,0,0,0,10);
BtnSetPosition(licenseCheck,560,421,75,15);
BtnSetPosition(btn5,560,421,75,15);
pathEdit.Hide;
BtnSetVisibility(btn_Browser,false)
WizardForm.Height:=450
// BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\xy.png'),0,0,650,450,false,true);
c_btn := true
BtnSetVisibility(btn5,false);
BtnSetVisibility(licenseBtn,false);
BtnSetVisibility(licenseCheck,false);
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic.png'),0,0,650,450,false,true);
progressbgImgbk:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loadingbk.png'),0,375,650,15,True,True);
progressbgImg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading.png'),0,375,0,0,True,True);
b1:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic1.png'),0,0,650,374,true,true); //加载图片必备的
b2:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic2.png'),0,0,650,374,true,true);
b3:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic3.png'),0,0,650,374,true,true);
b4:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic4.png'),0,0,650,374,true,true);
t1:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic1.png'),0,0,650,374,true,true); //加载图片必备的
t2:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic2.png'),0,0,650,374,true,true);
t3:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic3.png'),0,0,650,374,true,true);
t4:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\loading_pic4.png'),0,0,650,374,true,true);
ImgSetVisibility(t1,false) //出现动画时 第一张显示的图片 下面几张禁用的
ImgSetVisibility(t2,false)
ImgSetVisibility(t3,false)
ImgSetVisibility(t4,false)
ImgSetVisibility(b1,false) //出现动画时 第一张显示的图片 下面几张禁用的
ImgSetVisibility(b2,false)
ImgSetVisibility(b3,false)
ImgSetVisibility(b4,false)
BtnSetVisibility(btn_setup,false);
Timer1.Interval:=50
end
if CurPageID = wpFinished then
begin
Timer1.Interval:=0
ImgSetVisibility(progressbgImgbk,false)
ImgSetVisibility(progressbgImg,false)
btn_setup:=BtnCreate(WizardForm.Handle,245,358,160,50,ExpandConstant('{tmp}\btn_complete.png'),1,False)
BtnSetEvent(btn_setup,BtnClickEventID,WrapBtnCallback(@btn_setupclick,1));
BGimg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\finish_bg.png'),0,0,650,450,false,true);
saveMyDirRadio:=BtnCreate(WizardForm.Handle,50,300,15,15,ExpandConstant('{tmp}\checkbox.png'),4,TRUE)
saveCustomDirRadio:=BtnCreate(WizardForm.Handle,50,340,15,15,ExpandConstant('{tmp}\checkbox.png'),4,TRUE)
label1:= TLabel.Create(WizardForm);
with label1 do
begin
Parent := WizardForm;
Caption := '运行有道笔记';
Font.Name:='宋体'
Transparent := TRUE;
SetBounds(70 ,301,200,12)
end;
label2:= TLabel.Create(WizardForm);
with label2 do
begin
Parent := WizardForm;
Caption := '了解网页剪报功能';
Font.Name:='宋体'
Transparent := TRUE;
SetBounds(70 ,341,200,12)
end;
end
ImgApplyChanges(WizardForm.Handle)
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID=wpSelectComponents)then //跳过组件安装界面
result := true;
end;
Inno Setup 仿有道云安装包界面.zip
页:
[1]