平行世界

电影、优惠券分享网站-mylofter.com

Inno Setup 界面美化

Inno Setup 界面美化demo

 [Setup]

这个段包含用于安装程序和卸载程序的全局设置AppName:用以指定你正在安装的应用程序的标题,AppName 始终在安装过程中显示在安装屏幕的左上角以及安装向导中AppVersion:应用程序版本号AppVerName:在控制面板中显示的名称AppPublisher:在控制面板中显示的发布者DefaultDirName:用于选择目标位置向导面中的默认目录名DisableProgramGroupPage: 有效值: yes 或 no 默认值: no 说明: 如果该项设置为 yes, 安装程序将不会显示“选择程序组”向导页。在这种情况下,它将使用由 [Setup] 段的 DefaultGroupName 关键字指定的组名,或者“(Default)”如果没有指定组名的话。OutputDir:用于打包完程序的输出位置OutputBaseFilename:打包完程序显示的默认名Compression:指定要在文件中使用的压缩方法,以及压缩标准SolidCompression: 如果设为 yes,固实压缩将启用。这会使所有文件一次性压缩DisableReadyPage:如果设置为yes,那么就不会出现准备安装的界面DisableDirPage: 有效值: yes 或 no 默认值: no 说明: 如果该项设置为 yes, 安装程序将不会显示“选择目标文件夹”向导页。在这种情况下,它将始终使用默认的目录名SetupIconFile:安装程序图标UninstallIconFile:卸载程序图标Versioninfodescription:版本信息描述Versioninfocopyright:版本信息著作权VersioninfoproductName:版本信息产品名称

[Messages]

本段是对安装界面的描述

示例如下:

SetupAppTitle={#MyAppName} 安装向导

SetupWindowTitle={#MyAppName} 安装向导

 [Files]

定义安装程序安装文件到用户系统中的可选文件段

Source: tmp\*; DestDir: {tmp}; Flags: dontcopy solidbreak ; Attribs: hidden system

Source: app\*; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;

Source:需要打包进去的源文件

DestDir:默认是{app}

Flags: "recursesubdirs"  和 "createallsubdirs",意思是包含文件夹里的所有文件和子文件夹,

注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”,意为不比较版本信息

[Icons]

这个可选段定义所有创建在开始菜单和/或其它位置 (比如桌面) 的快捷方式

Name: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\DeviceOwner\{#MyAppName}\{#MyAppName}; Filename: {app}\Justsy.Tools.AndroidDeviceOwner.exe; WorkingDir: {app};

Name: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\DeviceOwner\{#MyAppName}\卸载 {#MyAppName}; Filename:{uninstallexe}; WorkingDir: {app};

Name: {commondesktop}\{#MyAppName}; Filename: {app}\Justsy.Tools.AndroidDeviceOwner.exe; WorkingDir: {app};

FileName:程序的路径

Name:开始菜单/桌面快捷方式的名称

IconFilename:图标位置

WorkingDir:程序路径

[Code]

本段主要是做的如何美化安装界面,其中引入了botva2.dll和InnoCallback.dl第三方用于美化界面的dll

#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;

licenseCheck:HWND;

licenseRich:TRichEditViewer;

MainLabel: TLabel;

 

//关闭界面

procedure CancelBtnOnClick(hBtn:HWND);

begin

WizardForm.CancelButton.OnClick(WizardForm);

end;

 

//最小化界面

procedure MinBtnOnClick(hBtn:HWND);

begin

SendMessage(WizardForm.Handle,WM_SYSCOMMAND,61472,0);

end;

 

//点击自定义按钮事件

procedure btn5click(hBtn:HWND);

begin

if c_btn then   //c_btn一个标志位

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.OnClick(WizardForm); //打开对话框,赋值路径到pathEdit控件

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.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,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;

 

 

//点击有道云服务笔记条款按钮事件

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;

c_btn := true;

 

MainLabel := TLabel.Create(WizardForm);

MainLabel.Parent := WizardForm;

MainLabel.AutoSize := False;

MainLabel.Left := 0;

MainLabel.Top := 0;

MainLabel.Width := WizardForm.Width;

MainLabel.Height := 50;

MainLabel.Caption := '';

MainLabel.Transparent := True;

MainLabel.OnMouseDown := @WizardMouseDown; //设置鼠标移动,由于窗体不支持OnMouseDown,所以使用TLabel

 

 

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('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));

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;

 

 

//在新向导页 (由CurPageID 指定) 显示后调用。

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   //如果CurPageID==正在安装

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);

 

BtnSetVisibility(btn_setup,false);

 

end;

if CurPageID = wpFinished then  //如果CurPageID==安装完成

begin

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); //窗体背景加载安装完成背景图

end;

 

ImgApplyChanges(WizardForm.Handle)

end;

 

//跳过组件安装界面

function ShouldSkipPage(PageID: Integer): Boolean;

begin

if (PageID=wpSelectComponents)  then

result := true;

end;

另外罗列了一些常用的常量

目录常量
{app}
应用程序目录,这是用户在安装向导的选择安装目录页里面所选择的。
例如:如果你使用了 {app}/MYPROG.EXE 作为一项并且用户选择了“C:/MYPROG”作为应用程序的目录,那么安装程序就会将它转换成“C:/MYPROG/MYPROG.EXE”。
{win}
系统的 Windows 目录。 例如:如果你使用了 {win}/MYPROG.INI 作为一项并且系统的 Windows 目录是“C:/WINDOWS”,那么安装程序就会将它转换成“C:/WINDOWS/MYPROG.INI”。
{sys}
系 统的 Windows 系统(System)目录(在 Windows NT/2000 下是 System32)。 例如:如果你使用了 {sys} /CTL3D32.DLL 作为一项并且系统的 Windows 系统目录是“C:/WINDOWS/SYSTEM”,那么安装程序就会将它转换成“C: /WINDOWS/SYSTEM/CTL3D32.DLL”。
{src}
这个文件夹指向安装程序所在的位置。
例如:如果你使用了 {src}/MYPROG.EXE 作为一项并且用户是从“S:/ ”安装的,那么安装程序就会将它转换成“S:/MYPROG.EXE”。
{sd}
系统驱动器,它是指 Windows 被安装到的那个驱动器,典型的是“C:”,对于 Windows NT/2000,这个常量同系统的环境变量“SystemDrive”是等效的。
{pf}
程序文件夹(Program Files),这个路径是系统的 Program Files 目录,典型的是“C:/Program Files”。
{cf}
公共文件夹(Common Files),这个路径是系统的 Common Files 文件夹,典型的是“C:/Program Files/Common Files”。
{tmp}
临时目录,这个目录并不是用户的 TEMP 环境变量指向的目录,而是安装程序在启动时在用户的临时目录下建立的一个子目录(它有一个类似于“
C:/WINDOWS/TEMP/IS-xxxxx.tmp”这样的名字),在安装程序退出时所有的文件和子目录将会被删除。对于在 [Run] 段里面要被执行且在安装以后又不需要的程序文件来说这个功能是非常有用的。
{fonts}
字 体目录,在 Windows 95/NT 4+ 下有一个专门为字体设立的目录(通常这个目录在 Windows 目录下且被命名为“FONTS”),这 个常量就指向这个目录。对于 Windows NT 3.51,这个常量是和 {sys} 等效的,因为当时还没有字体目录。
{dao}
DAO 目录,当安装程序运行在 Windows 95/NT 4+ 上时,它被等效为 {
cf}/Microsoft Shared/DAO,当运行于 Windows NT 3.51 时,它被等效为 {
win}/MSAPPS/DAO.
外壳(Shell)文件夹常量
Inno Setup 还 支持另外一套目录常量,这就是涉及到的外壳(shell)文件夹常量,它们具有和其它的目录常量相同的使用方法。然而,如果在脚本的 [Setup] 段 里面放入了 MinVersion=4,3.51 这一行来表示允许支持 NT 3.51,那么将只有 {group} 这个外壳文件夹常量能被使用,并签只能用在 [Icons] 段。

下面的包含了“user”的常量涉及到当前登陆的用户私人文档(profile),而带有“
common”的常量会涉及到全部用户(All Users)的私人文档(profile)。当安装程序运行在 Windows NT/2000 操作系统下并且用户不具有管理员的权限时,所有的带有“common”的常量会强迫同带有“user”的常量等效。
* 标记表示带有“common”的常量在 Windows 9x 操作系统下同带有“user”的常量等效。
{group}
程 序组的路径,取决于用户在安装程序向导的“选择程序组”页的选择。对于 Windows NT,这个文件夹始终被建立在所有用户的私人文档 (All Users profile),除非用户正在安装的这个应用程序不具有管理员的权限,那么在这种情况下它将被建立在用户的私人文档中 (profile).
{sendto}
当前用户的“发送”的路径。(没有公共的“发送”文件夹。)
{userappdata} & {commonappdata}
应用程序数据(Application Data)文件夹的路径。
{userdesktop} & {commondesktop} *
桌面文件夹的路径,推荐桌面快捷方式使用 {userdesktop}.
{userdocs} & {commondocs}
“我的文档”文件夹的路径(或者对于 NT 4.0,是指私人文件夹).
{userfavorites} & {commonfavorites}
“收 藏夹”的路径,这个常量的使用方法是需要 MinVersion 的设置至少为“4.1, 4”,目前只有 Windows 2000 支 持 {commonfavorites},如果使用的是在这之前的版本的 Windows,那么它将会被转换成和{userfavorites} 相同的 目录。
{userprograms} & {commonprograms} *
在开始菜单里面的程序文件夹的路径。
{userstartmenu} & {commonstartmenu} *
开始菜单的定级路径。
{userstartup} & {commonstartup} *
开始菜单里面的启动文件夹的路径。
{usertemplates} & {commontemplates}
模板(Templates)文件夹的路径,目前只有 Windows 2000 支持 {
commontemplates},如果使用的是在这之前的版本的 Windows ,它将会被转换成和 {usertemplates} 相同的目录。
其他的常量
{/}
一个反斜杠字符,请参见本页前面提到的关于常量 {/} 和单字符 / 在使用上有何不同的说明。
{%NAME}
内嵌一个环境变量,这个 NAME 是要使用的环境变量的名字。如果在用户的系统当中指定的环境变量不存在,这个常量就会被一个空的字符串所替代。
{computername}
安装程序正在运行的计算机的名称(就是“GetComputerName”函数的返回值)。
{groupname}
用户在安装程序向导的选择程序组页选择的程序组的名称,这个是不同于 {group} 的,它不包括路径。
{hwnd}
(专门用途)传送安装程序背景窗口的窗口句柄。
{reg:HKxx/SubkeyName,ValueName|DefaultValue}
内嵌一个注册表值。
HKxx 指定根键(root key),参见 [Registry] 段 文档所列出的根键。
SubkeyName 指定要读取的子键的名称。
ValueName 指定要读取的值的名称,要读取一个键的默认值就让 ValueName 为空。
DefaultValue 如果指定的注册表值不存在或者它不是一个字符串类型(REG_SZ 或者 REG_EXPAND_SZ),则嵌入这个值。
如果你希望包括一个逗号,竖线(字符“|”)或大括号闭弧“}”在常量里面,你必须通过“%-编码” 形式用“%”后紧跟一个两位的16进制代码转译后替换原来的字符,一个逗号是“%2c”,一个竖线符是“%7c”,一个大括号闭弧是“%7d”。
DefaultValue 可以包括常量,然而,如上所诉内嵌的常量的大括号的闭弧
(“}”) 必须被改成“%7d”才可以。
{srcexe}
安装程序的文件名全称(包括全程路径和文件名),例如“C:/SETUP.EXE”。
{username}
运行安装程序的用户的名称(函数 GetUserName 的返回值)。
公共参数

有俩个可选的参数可以在所有的段里面的任何项中使用,它们是:
MinVersion
说明:
该 项处理所需的分别最低的 Windows 版本和 Windows NT 版本. 如果将某个版本号指定为 0 那么在该平台上就再也不会处理这项了,版 本创建编号(Build numbers)和(或)服务包级别(Service pack levels)也可以被包括在版本号当中。这个参数将会覆盖位 于 [Setup] 段当中的 MinVersion 关键字。

示例:
MinVersion: 4.0,4.0
OnlyBelowVersion

说明:
基本上是和 MinVersion 相反,该项所指定的最低的 Windows 版本 和 Windows NT
版 本将不会被处理,例如:如果你指定了 4.1,5.0 并且用户运行在 Windows 95 或 NT 4.0 下,那么该项将会被处理,但是如果用户 运行在 Windows 98 (报告的版本信息是 4.1)或 Windows 2000 (报告的版本信息是 NT 5.0),则该项就不会被处理。 使用“0”表示该版本号上限的限制。版本创建编号(Build numbers)和(或)服务包级别(Service pack levels) 也可以 包括在版本号当中。这个参数将会覆盖位于 [Setup] 段当中的 OnlyBelowVersion 关键字。
示例:
OnlyBelowVersion: 4.1,5.0
其它注意事项

安装程序是按照段内的排列顺序来处理所有的项的,[UninstallRun] 段是个例外,卸载时处理所有项的顺序是与安装程序相反的。
在这个示例中:
[INI]
Filename: “{win}/MYPROG.INI”; Section: “InstallSettings”; Flags: uninsdeletesectionifempty
Filename: “{win}/MYPROG.INI”; Section: “InstallSettings”; Key: “InstallPath”; String: “{app}”; Flags: uninsdeleteentry
安 装程序首先记录下第一项的数据 uninsdeletesectionifempty 标记到卸载记录中。创建第二项的键,然后记录 下 uninsdeleteentry 标记的数据到卸载记录中,当程序被卸载时,卸载程序将首先处理 uninsdeleteentry 标记,删除该 项,然后才是 uninsdeletesectionifempty 标记。
如果安装程序在用户的系统中检测到一个 Windows 共享版本,Windows 系统目录是写保护的,{sys} 目录常量将会被转变为用户的 Windows 目录替代系统目录。
在命令行执行编译器
脚本文件也可以在命令行被安装编译器编译。命令行的使用方法如下:
compiler /cc <脚本文件>
示例:
compil16 /cc c:/isetup/sample16/sample16.iss
compil32 /cc “c:/isetup/sample32/my script.iss”
在上面列出的例子中,带有空格的文件名必须用引号括起来。
在命令行运行安装编译器不支持正常的进程显示或任何错误消息。如果编译成功安装编译器将会返回一个退出代码 0,如果是 1 则表示有无效的命令行参数, 2 则表明编译失败。

安装命令行参数  安装程序本身接受三个不同的可选的命令行参数,这些参数能被用于系统管理员和其他程序调用安装程序。
/SP-

在安装程序开始时禁止“即将安装 … ,继续吗?”的提示,当然,它将使 [Setup] 段的 DisableStartupPrompt 关键字设置为 yes 无效
/DIR=”x:/dirname”

替换在“选择目标文件夹”向导页显示的默认的目录名,必需要指定一个全程路径名。如果 [Setup] 段的 DisableDirPage 关键字被设置为 yes, 那么该命令行参数将被忽略。
/GROUP=”group name”

替换在“选择程序组”向导页显示的默认的程序组名,如果 [Setup] 段的 DisableProgramGroupPage 关键字被设置为 yes, 那么该命令行参数将被忽略。

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注