Inno Setup详细教程

一.关于Inno Setup如何在安装时播放音乐

方法(1):

在脚本编译里的[Code]与[Files]段处添加以下代码:

[Code]
Function mciSendString(lpszCommand: String; lpszReturnString: Integer; cchReturnLength: Integer; hwndCallback: Integer): Integer;
external 'mciSendStringA@winmm.dll stdcall';


procedure InitializeWizard();
var
   BGMusicFile,SplashFile: string;
SplashForm: TForm;
SplashFileName: String;
I: Integer; 
begin

ExtractTemporaryFile(ExtractFileName(ExpandConstant('{tmp}\music.mp3')));
SplashForm := TForm.create(nil);
with SplashForm do
   begin
mciSendString(ExpandConstant('play {tmp}\music.mp3'),0);
Close;
Free;
   end;
end;

[Files]
Source: "C:\music.mp3"; Flags: dontcopy

或者

Source: "C:\mymusic.mp3"; DestDir: "{tmp}"; Flags: dontcopy

代码说明:[Code]中蓝色代码{tmp}\music.mp3的意思是播放inno setup安装时创建的临时文件夹内的music.mp3音乐文件!

[Files]中C:\music.mp3是你音乐源文件的地址,填自己的音频名称与音频格式。Flags: dontcopy的意思是在安装时将音乐文件放到Inno Setup所创建的临时文件夹内,并且在完成安装后删除此音乐文件!

二.关于Inno Setup如何修改安装向导内的图片

这个很简单,只需来到Inno Setup程序的根目录找到

WizModernSmallImage.BMP 与 WizModernImage.bmp 这个2个图片文件替换即可。

其中:WizModernImage.bmp为左侧图 如图(1); WizModernSmallImage.BMP则为右上角图标 如图(2)。

说明:WizModernImage.bmp这个图片的大小为:164×314 WizModernSmallImage.BMP这个图片的大小为:55×55 (这2个图片大小 我是按照以前默认大小改的,其它比例大小我没试过,有兴趣的话可以自己试下。)

Inno Setup详细教程 - 华雨腾 - 华雨腾

Inno Setup详细教程 - 华雨腾 - 华雨腾

三:关于Inno Setup如何在安装分割线里加入文字 如图:

Inno Setup详细教程 - 华雨腾 - 华雨腾

只需要加入一个[Messages]段并在此段下输入以下代码:
BeveledLabel=Professional

代码说明:其中绿色部分Professional为自定义文字,可以自行随意输入!

四:关于Inno Setup如何创建多个桌面快捷方式

这个也是很简单只要在[Icons]段加入以下代码:

Name: "{commondesktop}\程序名称1"; Filename: "{app}\InstVise.exe"; Tasks: desktopicon;WorkingDir: "{app}"

Name: "{commondesktop}\程序名称2"; Filename: "{app}\Translator.exe"; Tasks: desktopicon; WorkingDir: "{app}"

说明:程序名称1 and 程序名称2 就是快捷方式的名字,这个自己定义。InstVise.exe andTranslator.exe为快捷方式位于根目录的源执行文件。(还有值得注意的是,如果你一开始选择的是使用向导来创建安装并且在向导快捷方式项目已经对是否创建桌面快捷方式进行了打勾,那么系统会自动在[Icons]段自动创建主执行文件的快捷方式,此代码为:Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon    这条代码中{#MyAppName}的意思是使用安装文件夹内主执行文件的程序名字,{#MyAppExeName}的意思是安装文件夹内主执行文件的源执行文件名称。请大家注意的是避免重复建立快捷方式。如果想用这段代码请在后面添加绿色部分;WorkingDir: "{app}"这个是快捷方式的起始位置。在默认情况下没有这部分。可能会导致快捷方式无法打开!)

09.08.26更新增加(有些游戏或者软件的主执行文件不在安装目录内而在安装目录的子文件内,像这种情况的解决方法如下):测试修正中!

-----------------------------------------------------------------------------------------------------------

Name: "{commondesktop}\快捷方式程序名称"; Filename: "{app}\qq.exe"; Tasks: desktopicon;WorkingDir: "{app}"

说明:其中蓝色字部分是要注意的:

1.{app}\qq.exe将进行子目录添加,如:{app}\子文件夹1\子文件夹2\qq.exe

2.{app}将进行对应添加,如:{app}\子文件夹1\子文件夹2\

-----------------------------------------------------------------------------------------------------------

五:关于Inno Setup安装欢迎界面文字与安装向导文字颜色修改

我们只需创建[Code]段在此段添加如下代码:

[Code]

//千万别忘记我噢~~

procedure InitializeWizard();

begin

//改变欢迎页面文字的颜色 (如图)

WizardForm.WelcomeLabel1.Font.Color:= clNavy;

WizardForm.WelcomeLabel2.Font.Color:= clTeal;

Inno Setup详细教程 - 华雨腾 - 华雨腾

//改变其他页面文字的颜色 (如图)

WizardForm.PageNameLabel.Font.Color:= clred;

WizardForm.PageDescriptionLabel.Font.Color:= clBlue;

end;

Inno Setup详细教程 - 华雨腾 - 华雨腾

说明:代码中浅绿色标识的为颜色,可以随意替换目前只发现支持以下颜色!

-----------------------------------------------------------------------------------------------------------

clBlack(黑色),clMaroon(暗红),clGreen(绿色),clOlive(橄榄绿),
clNavy(深蓝),clPurple(紫色),clTeal(深青),clGray(灰色),
clSilver(浅灰),clRed(红色),clLime(浅绿),clYellow(黄色),
clBlue (蓝色),clFuchsia(紫红),clAqua(青绿),clWhite(白色)。

-----------------------------------------------------------------------------------------------------------

六:Inno Setup的打包压缩与分割压缩bin文件的方法

1.分割bin文件,在[setup]段添加:

DiskSpanning=true
DiskSliceSize=2100000000

说明:DiskSliceSize=2100000000 是按字节计算,可随意输入想分割的数。貌似最多不能超过2200000000

2.Inno Setup的压缩格式,默认是按照7Z的压缩算法进行压缩的。还是在[setup]段:

找到:Compression=lzma

说明:其中绿色的lzma为默认压缩格式,也就是7z的默认压缩方式进行压缩。下面在提供一种实用

的压缩方式,也就是7z的极限压缩。

-----------------------------------------------------------------------------------------------------------

Compression=none(此命令为不压缩。)

Compression=lzma/ultra64(此压缩为7z极限压缩算法,耗内存很大时间也会长些。不过压缩率很不错!)

-----------------------------------------------------------------------------------------------------------

七.关于Inno Setup在安装欢迎界面时添加自己的文字方法(如图)

Inno Setup详细教程 - 华雨腾 - 华雨腾

方法(1):

1.添加[Code]段

2.在此段下输入以下代码:

procedure InitializeWizard();

var

LabelDate: Tlabel;

begin

WizardForm.WelcomeLabel2.Autosize := true;

LabelDate := Tlabel.Create(WizardForm);

LabelDate.Autosize := true;

LabelDate.Caption := '本程序由Professional制作'#10#13#10#13'欢迎PC爱好者共同讨论'#10#13#10#13'Professional: http://hi.baidu.com/pfia';

LabelDate.Parent := WizardForm.WelcomePage;

LabelDate.Left := WizardForm.WelcomeLabel2.Left;

LabelDate.Top := WizardForm.WelcomeLabel2.Top +WizardForm.WelcomeLabel2.Height +80;

end;

方法(2):

1.添加[Messages]段;

2.在此段下输入该代码:

ClickNext=单击“下一步”继续,或单击“取消”退出安装程序。%n%n%n%n%n%n%n%n本程序由Professional制作%n%n欢迎PC爱好者共同讨论%n%nProfessional: http://hi.baidu.com/pfia

说明:

1.方法一与方法二中代码绿色字部分为个人喜好可随意更改处。

2.方法一绿色字中#10#13为组合换行符;方法二绿色字中%n为换行符。<学过C的朋友应该知道在C语言中

   换行符为\n,千万不要搞混。。>换行符可按照自己喜好随意增减。

3.千万不要忘掉方法一代码绿色字内的一对单引号''。(因为那些文字都是字符串,方法2中不用添加。)

-----------------------------------------------------------------------------------------------------------

八.关于Inno Setup显示关于按钮以及网站超链接(如图)

Inno Setup详细教程 - 华雨腾 - 华雨腾


添加[Code]段,在此段下输入代码:

procedure AboutButtonOnClick(Sender: TObject);
begin
MsgBox('欢迎访问Professional'#13#13'http://hi.baidu.com/pfia',mbInformation,mb_Ok);
end;

procedure URLLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin

ShellExec('open','http://hi.baidu.com/pfia','',SW_SHOW,ewNoWait,ErrorCode)
end;

procedure InitializeWizard();
var
AboutButton: TButton;
URLLabel: TNewStaticText;

begin
AboutButton := TButton.Create(WizardForm);
AboutButton.Left := WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width;
AboutButton.Top := WizardForm.CancelButton.Top;
AboutButton.Width := WizardForm.CancelButton.Width;
AboutButton.Height := WizardForm.CancelButton.Height;
AboutButton.Caption := '关于(&A)';
AboutButton.OnClick := @AboutButtonOnClick;
AboutButton.Parent := WizardForm;

URLLabel := TNewStaticText.Create(WizardForm);
URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
URLLabel.Left := AboutButton.Left + AboutButton.Width + 10;
URLLabel.Caption := 'Professional';
URLLabel.Font.Style := [fsBold,fsUnderline];
URLLabel.Font.Color := clBlue;
URLLabel.Cursor := crHand;
URLLabel.OnClick := @URLLabelOnClick;
URLLabel.Font.Name := '宋体';
URLLabel.Font.Height := ScaleY(-13);
URLLabel.Parent := WizardForm;
URLLabel.Hint := '点击访问相关网站';
URLLabel.ShowHint := True;
end;

代码说明:

①:绿色代码部分是点击关于按钮后弹出的信息,#13为换行符。

②:紫色代码部分是点击超链接信息后转到的网站地址。

③:粉色代码部分为关于按钮的名称,(&A)为快捷键,可随意填写字母。

④:蓝色代码部分为超链接文字名称。

⑤:黄色代码部分为超链接文字名称颜色,clBlue 可改为其它颜色。如:

clBlack(黑色),clMaroon(暗红),clGreen(绿色),clOlive(橄榄绿),
clNavy(深蓝),clPurple(紫色),clTeal(深青),clGray(灰色),
clSilver(浅灰),clRed(红色),clLime(浅绿),clYellow(黄色),
clBlue (蓝色),clFuchsia(紫红),clAqua(青绿),clWhite(白色)。

⑥:红色代码部分为超链接文字名称字体,可修改为黑体字型等。

⑦:橙色代码部分为鼠标指针放到超链接文字标题上显示的提示语。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都是大家转来转去,原文出处我已经找不到了。这篇文章写的很不错,但最后部分“PermuteFunction 的终极版本”描述的不太清楚,完全按照该文章代码执行,是不行的。可能是作者故意这样做的?本文最后提供修正后的下载地址。原文如下:一、关于API Hook1.什么是API Hook不知道大家是否还记得,在DO
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都是大家转来转去,原文出处我已经找不到了。 这篇文章写的很不错,但最后部分“PermuteFunction 的终极版本”描述的不太清楚,完全按照该文章代码执行,是不行的。需要修改mess.pas中代码才行。其实文中提到的一个结构,代码中并没有使用typePIMAGE_IMPORT_DESCRIPTOR = ^IMA
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把部分api 翻译成了dephi版的 记录一下 地址 ffmpegvcl.zip
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的功能是:将源操作数送到目的操作数中,即:(dst) &lt;--(src) 1.dst和src类型必须匹配,即必须同为字节
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂,比较少用。 2.WinExec主要运行EXE文件。如:WinExec('Notepad.exe Readme.txt', SW_SHOW); 3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。 首先必须引用shellapi
API原型: Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) 参数 类型及说明 lpExistingFileName String,欲移
附带通用控件安装方法: ---------- 基本安装 1、对于单个控件,Componet-->install component..-->PAS或DCU文件-->install; 2、对于带*.dpk文件的控件包,File-->Open(下拉列表框中选*.dpk)-->install即可; 3、对于带*.bpl文件的控件包,Install Packages-->Add-->bpl文件名即可; 4
type   TRec=Record     msg:string;     pic:TMemoryStream; end; procedure TForm2.BitBtn1Click(Sender: TObject); var   ms:TMemoryStream;   Rec1,Rec2:TRec;   cc:tmemorystream;   jpg:TJPEGImage; begin   R
program Project1; { Types and Structures Definition } type   WNDCLASSEX = packed record     cbSize: LongWord;     style: LongWord;     lpfnWndProc: Pointer;     cbClsExtra: Integer;     cbWndExtra: In
   在Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。有时,对于繁杂 的,或重复性的操作,我们能否通过编制程序来代替手工输入,而用程序来模拟键盘及鼠标的输入呢?答案是肯定的。这主要是通过两个API函数来实现的。      下面以Delphi为例来介绍一下如何实现这两个功能。模拟键盘我们用Keybd_event这个ap
delphi中经常见到以下两种定义 Type TMouseProc = procedure (X,Y:integer); TMouseEvent = procedure (X,Y:integer) of Object; 两者样子差不多但实际意义却不一样, TMouseProc只是单一的函数指针类型; TMouseEvent是对象的函数指针,也就是对象/类的函数/方法 区
Windows 2000/XP和2003等支持一种叫做"服务程序"的东西.程序作为服务启动有以下几个好处:     (1)不用登陆进系统即可运行.     (2)具有SYSTEM特权.所以你在进程管理器里面是无法结束它的.     笔者在2003年为一公司开发机顶盒项目的时候,曾经写过课件上传和媒体服务,下面就介绍一下如何用Delphi7创建一个Service程序.     运行Delphi7,选
方法一: 1.调试delphi 写的服务程序,有这么一个办法。原来每次都是用attach to process方法,很麻烦。并且按照服务线程的执行线路,可能会停不到想要的断点。笨办法是,在procedure TsvcFrm.ServiceExecute(Sender: TService);中想要下断的语句前加个人定胜天的sleep(20000),但实际上这种办法是主观臆测的。可行,没问题。记得大学
Delphi For iOS开发指南(17):让应用程序禁止竖屏(也就是只显示横屏)     最近好多人问,怎么样让Delphi For iOS开发的应用程序禁止竖屏,也就是想让它一直横屏显示,横屏是好,一行可以放好几个控件,表格的话也可以多显示几列,看起来方便。 只要一句代码就可以让Delphi For iOS开发的应用程序禁止竖屏,如下: Application.FormFactor.Orie
一个比较完整的Inno Setup 安装脚本,增加了对ini文件设置的功能,一个安装包常用的功能都具备了。 [Setup] ; 注: AppId的值为单独标识该应用程序。 ; 不要为其他安装程序使用相同的AppId值。 ; (生成新的GUID,点击 工具|在IDE中生成GUID。) AppId={{A9861883-31C5-4324-BD9A-DC3271EEB675} ;程序名 AppName
在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。 在Uses单元中引用 IdHashMessageDigest,IdGlobal, IdHash 单元,再写如下代码即可以达到MD5的实现。 示例代码 procedure TForm1.Button1Click(Sender: TObjec
在Delphi 7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下: 1 2 3 4 5 6 7 8 9 _NOTIFYICONDATAA = record    cbSize: DWORD;    Wnd: HWND;    uID: UINT;    uFlags: UINT;    uCallback
声明: 1. type Name = Existing type; 2. type Name = type Existing type; 3. type Name = (EnumValue1 [=value], EnumValue2 [=value] ...); 4. type Name = Expression1..Expression2; 5. type Name = ^Existing ty