Inno Setup 编程技术全图文教程

2023-11-29 06:50

本文主要是介绍Inno Setup 编程技术全图文教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.caodi.name/blog/innosetup_pic.html

初级教程

如何安装到指定目录下?如安装到E:\空之轨迹SC

[Setup]
DefaultDirName=E:\空之轨迹SC
DisableDirPage=yes
DisableReadyPage=yes
DisableFinishedPage=yes


如何判定程序已经安装过而不重复安装,假如你的程序将要安装到 {pf}\空之轨迹SC,如果在该文件夹中已经有你想要安装的文件 ed6.exe,那么你认为该程序算是已经安装。那么程应该这样写:

; 程序已经安装在你的系统中了!这个是提示安装过。你可以设定其他语言说明 例如 已安装或重复安装
; {pf}\空之轨迹SC 为安装目录文件文件夹,同理如果是其他目录更改目录即可!


[Code]
function InitializeSetup(): boolean;
begin
Result := true;
if FileExists(ExpandConstant('{pf}\空之轨迹SC\ed6.exe')) then
begin
MsgBox('程序已经安装在你的系统中了!', mbInformation, MB_OK );
Result := false;
end;
end;


[Setup]

AppName=纸莎草书繁体中文破解版
;游戏名
AppVerName=纸莎草书繁体中文破解版
;游戏版本名
AppPublisher=F.B.I游戏工作室(yang8871/yangteng)
;公司
AppPublisherURL=http://www.aoizora.com
;网站
AppSupportURL=http://www.aoizora.com
AppUpdatesURL=http://www.aoizora.com
DefaultDirName=E:\空之轨迹SC
;安装目录
DisableDirPage=yes
DisableReadyPage=yes
DisableFinishedPage=yes
DefaultGroupName=纸莎草书繁体中文破解版
;产品名称
LicenseFile=C:\Documents and Settings\Administrator\桌面\用户使用协议.txt
;协议书(按同意之前要先看的那个)
InfoAfterFile=C:\Documents and Settings\Administrator\桌面\安装后说明.txt
; 安装完成后的话
OutputDir=C:\Documents and Settings\Administrator\桌面
;输出目录 存放的目录
OutputBaseFilename=纸莎草书繁体中文破解版
; 输出的游戏名称
SetupIconFile=D:\图标\纸莎草书.ico
;图标位置
Compression=lzma
;压缩方式:极限压缩
SolidCompression=yes
;(yes为固实压缩 no则相反)
InternalCompressLevel=ultra
;文件极限压缩 目录下的文件
VersionInfoDescription=纸莎草书繁体中文破解版
; 产品名称
VersionInfoCopyright=Copyright (C) 2009 By F.B.I游戏室(yang8871/yangteng)
;版权
DiskSpanning=true
; 分卷压缩
DiskSliceSize=645766400
;分割的文件大小 单位K 大小为615M
VersionInfoVersion=1.0
;文件版本
VersionInfoTextVersion=1.0
TouchTime=22:23
;生成的时间
PrivilegesRequired=none
;不需要管理权限也能安装
AlwaysRestart=yes
;询问是否要重新启动?(可以设置强制重新启动但是感觉没必要就不要害人)


Inno Setup 编程技术全图文教程(转载) - pony - pony的博客


[Files]
Source: "C:\纸莎草书繁体中文破解版\game.exe"; DestDir: "{app}"; Flags: ignoreversion
;游戏生成的快捷方式所指原执行文件

Source: "C:\纸莎草书繁体中文破解版\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
;要打包的目录


[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Languages\ChineseSimp.isl"
;语言中性


[Icons]
Name: "{group}\纸莎草书繁体中文破解版"; Filename:"{app}\game.exe";WorkingDir:"{app}"
;生成开始菜单游戏可执行程序game.exe是你目录下的可执行文件 WorkingDir: {app}” WorkingDir后面加{app} app的意思是随安装目录生成

Name: "{group}\{cm:ProgramOnTheWeb,访问青空学园}"; Filename:" http://www.aoizora.com; WorkingDir: {app} "
;生成开始菜单网站
Name: "{group}\{cm:UninstallProgram,纸莎草书繁体中文破解版}"; Filename: "{uninstallexe}; WorkingDir: {app}"
;生成开始菜单卸载
Name: "{commondesktop}\纸莎草书繁体中文破解版"; Filename: "{app}\game.exe"; Tasks: desktopicon;WorkingDir: "{app}"
;Tasks: desktopicon 任务:生成快捷方式

[Tasks]
Name: changestartpage; Description: "设置青空学园为主页"
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
;Tasks: desktopicon 任务:生成快捷方式




压缩方式的设置:默认是lzma
[Setup]
Compression=XXX
XXX 表示压缩方式,目前的版本支持以下的压缩方式:
zip ; 相当于 zip/7,是软件默认的压缩方式
zip/1 ; Zip 格式,压缩率最低,速度最快,耗内存最少
......
zip/9 ; Zip 格式,压缩率最高,速度最慢,耗内存最大
bzip ; 相当于 bzip/9
bzip/1 ; BZip2 格式(压缩率高于 Zip 格式),压缩率最低,速度最快,耗内存最少
......
bzip/9 ; BZip2 格式,压缩率最高,速度最慢,耗内存最大
lzma ; 相当于 lzma/max
lzma/fast ; 7-Zip LZMA 格式(压缩率高于 Zip 和 BZip2 格式),压缩率低,速度快
lzma/normal ;7-Zip LZMA 格式,压缩率一般,速度一般
lzma/max ;7-Zip LZMA 格式,压缩率高,速度慢
lzma/ultra ;7-Zip LZMA 格式,超级压缩(谨慎使用,特别耗内存!!)
none ;不压缩


让安装程序安装后随WINDOWS启动~这个感觉没必要 要娱乐一下的试试看?

[Tasks]
Name: "startup"; Description: "随 windwos 启动"; GroupDescription: "添加启动选"
;Takes建立任务类似快捷方式类
[Registry]
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Run; valueType: string; valueName: "fileBX"; valueData: "{app}\fileBX.exe";Flags: uninsdeletevalue; Tasks: startup
;在注册表上修改随windows启动!


想把这2个图片换了?安装软件后目录有2个图片 你可以替换这2个头像就可以了。
WizModernSmallImage.bmp 这个右上方的网站标志(注意只是举例)

WizModernImage.bmp 这个是左边的游戏图片


[Code]

procedure URLLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.aoizora.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure AboutButtonOnClick(Sender: TObject);
begin
MsgBox('^青空学园—多次元动漫游戏论坛^'#13#10' http://www.aoizora.com', mbInformation, MB_OK);
;这是关于按钮里面的内容 #13#10是换行的意思
end;

var
AboutButton, CancelButton: TButton;
URLLabel: TNewStaticText;

procedure InitializeWizard();
begin
{ Create the pages }
WizardForm.PAGENAMELABEL.Font.Color:= clred;
WizardForm.PAGEDESCRIPTIONLABEL.Font.Color:= clBlue;
WizardForm.WELCOMELABEL1.Font.Color:= clGreen;
WizardForm.WELCOMELABEL2.Font.Color:= clblack;

CancelButton := WizardForm.CancelButton;
AboutButton := TButton.Create(WizardForm);
AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
AboutButton.Top := CancelButton.Top;
AboutButton.Width := CancelButton.Width;
AboutButton.Height := CancelButton.Height;
AboutButton.Caption := 'About';
AboutButton.OnClick := @AboutButtonOnClick;
AboutButton.Parent := WizardForm;

URLLabel := TNewStaticText.Create(WizardForm);
URLLabel.Caption := '『青空学园』';
URLLabel.Cursor := crHand;
URLLabel.OnClick := @URLLabelOnClick;
URLLabel.Parent := WizardForm;
{ Alter Font *after* setting Parent so the correct defaults are inherited first }
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
URLLabel.Font.Color := clBlue;
URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(20);
end;


默认勾选同意~急着安装?不用急这就是设定默认的同意!
Inno Setup 编程技术全图文教程(转载) - pony - pony的博客


[Code]
var
Label2: TLabel;
Label1: TLabel;
CheckBox1: TCheckBox;
NewStaticText1: TNewStaticText;

procedure Cus_Next(Sender: TObject);
begin
if CheckBox1.Checked = True then
WizardForm.LicenseAcceptedRadio.Checked := True
else
WizardForm.LicenseNotAcceptedRadio.Checked := True
end;

procedure InitializeWizard();
begin
WizardForm.LicenseMemo.Height := 127;

WizardForm.LicenseAcceptedRadio.visible := False;
WizardForm.LicenseNotAcceptedRadio.visible := False;

Label1 := TLabel.Create(WizardForm);
Label1.Parent := WizardForm.LicensePage;
Label1.Left := WizardForm.LicenseMemo.Left;
Label1.Top := WizardForm.LicenseMemo.Top + WizardForm.LicenseMemo.Height + 7;
Label1.Width := WizardForm.LicenseMemo.Width;
Label1.Height := ScaleY(12);
Label1.Caption := '如果您接受许可协议,点击下方的单选框。您必须接受协议才能安装 我的程序'#13'1.5。单击 [下一步

(N)] 继续。';

CheckBox1 := TCheckBox.Create(WizardForm);
CheckBox1.Parent := WizardForm.LicensePage;
CheckBox1.Left := WizardForm.LicenseMemo.Left;
CheckBox1.Top := WizardForm.LicenseMemo.Top + WizardForm.LicenseMemo.Height + 47;
CheckBox1.Width :=WizardForm.LicenseMemo.Width;
CheckBox1.Height := ScaleY(17);
CheckBox1.Caption := '我同意“许可协议”中的条款(&A)';
CheckBox1.TabOrder := 0;
CheckBox1.OnClick := @Cus_Next;

end;


去掉“关于安装程序”菜单

[code]

const MF_BYPOSITION=$400;

function DeleteMenu(HMENU: HWND; uPosition: UINT; uFlags: UINT): BOOL;
external 'DeleteMenu@user32.dll stdcall';

function GetSystemMenu(HWND: hWnd; bRevert: BOOL): HWND;
external 'GetSystemMenu@user32.dll stdcall';

procedure InitializeWizard();
begin
DeleteMenu(GetSystemMenu(wizardform.handle,false),8,MF_BYPOSITION);
DeleteMenu(GetSystemMenu(wizardform.handle,false),7,MF_BYPOSITION);
end;



[Messages]
ClickNext=单击“下一步”继续,或单击“取消”退出安装程序。%n%n%n%n%n%n%n此程序由yang8871/yangteng制作,对此程序保留权利%n欢迎加入青空学园:

左下方F.B.I标志 XXXX改为你的名字或组织均可!

[Messages]
BeveledLabel=XXXXXX



添加任务设定为主页,卸载游戏以后会自动访问青空学园,至于安装游戏自动添加到收藏夹就不弄了。因为系统不同的关系这个会出错~XP,VISTA默认的管理目录不同!


[Tasks]
Name: changestartpage; Description: "设置青空学园为主页"
;建立一个如上图的任务

[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Internet Explorer\Main"; ValueType: string; ValueName: "Start Page"; ValueData: "http://www.aoizora.com/"; tasks: changestartpage
;定义网站地址 上面的www.aoizora.com 改成你想要修改的网页即可


安装完成后想自动访问网站~


[CODE]
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep=ssDone then ShellExec('open', 'http://www.aoizora.com ', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;


安装、卸载时判断是否程序正在运行,卸载后自动打开网页

[code]
var
ErrorCode: Integer;
IsRunning: Integer;
// 安装时判断客户端是否正在运行

function InitializeSetup(): Boolean;

begin

Result :=true; //安装程序继续

IsRunning:=FindWindowByWindowName('东方宽频网络电视');

while IsRunning<>0 do

begin

if Msgbox('安装程序检测到客户端正在运行。' #13#13 '您必须先关闭它然后单击“是”继续安装,或按“否”退出!', mbConfirmation, MB_YESNO) = idNO then

begin

Result :=false; //安装程序退出

IsRunning :=0;

end else begin

Result :=true; //安装程序继续

IsRunning:=FindWindowByWindowName('东方宽频网络电视');

end;

end;

end;

// 卸载时判断客户端是否正在运行

function InitializeUninstall(): Boolean;

begin

Result :=true; //安装程序继续

IsRunning:=FindWindowByWindowName('东方宽频网络电视');

while IsRunning<>0 do

begin

if Msgbox('安装程序检测到客户端正在运行。' #13#13 '您必须先关闭它然后单击“是”继续安装,或按“否”退出!', mbConfirmation, MB_YESNO) = idNO then

begin

Result :=false; //安装程序退出

IsRunning :=0;

end else begin

Result :=true; //安装程序继续

IsRunning:=FindWindowByWindowName('东方宽频网络电视');

end;

end;

end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

begin

case CurUninstallStep of

usUninstall:

begin // 开始卸载

end;

usPostUninstall:

begin // 卸载完成

// MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall just finished.', mbInformation, MB_OK);

// ...insert code to perform post-uninstall tasks here...

ShellExec('open', 'http://www.dreams8.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);

end;

end;

end;


颜色代码

颜色代码名称:

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


这软件打包单个exe文件只能是2G一下。为了刻盘方便一般都是分割成600多m一个的 CD最大容量为700M。DVD则为4.7G 新版的2009卡巴斯基因为检测打开大型EXE文件特别慢。所以做成这样最好不过了~方便收藏安装!
Inno Setup 编程技术全图文教程(转载) - pony - pony的博客
[Setup] 命令下面加可以了
DiskSpanning=true
DiskSliceSize=645766400 这个是分割文件的大小!


自动写入注册表 有些部分是要手动注册的。以下功能可实现自动注册!说明一下一般注册表都是自己手动进入注册表寻找的 不过有些玩家要求 这里介绍一个软件(万象注册表分析工具)大家不妨一试
注册表监视器 用法:拖动exe安装程序到软件界面,安装结束后会弹出关于注册表变化的信息!大部分提取注册表适用,但是不排除有些游戏会出错!

下载地址


例如需要手动注册的注册表内容为:

[HKEY_LOCAL_MACHINE\Software\NINELIVES\Princess Maker3CHT\1.0]
"InstPath"="C:\\美少女梦工厂3梦幻妖精简体中文XP版"

写入的内容应为:

[Registry]
Root: HKLM; SubKey: SOFTWARE\NINELIVES; Flags: uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\NINELIVES\Princess Maker3CHT; Flags: uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\NINELIVES\Princess Maker3CHT\1.0; Flags: uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\NINELIVES\Princess Maker3CHT\1.0; Flags: uninsdeletekey; ValueType: string; ValueName: InstPath; ValueData: {app}


不好意思各位我忽略了一些东西!本人不用ISTOOL的 基本上都是自己写!通过这个注册表工具可以提取注册表 或者自己到注册提取都可以!
然后用ISTOOL导入变成IS能识别的语言!





中级教程

启动安装弹出闪屏及音乐,关于按钮也写进去了~原创编写·不过这插件是由高人提取NISS的插件应用到inno中的,使inno比之niss制作更加美观简单!来吧!不懂慢慢看!解压到桌面就可以了写的时候也是默认桌面的~注意解压的时候解压名为NSISADDIN 加了一点原创标志所以解压后名字不同~注意不然就把下面的命令自己改下一样的


今天到此为止先。累了~



[Setup]
AppName=我的程序
AppVerName=我的程序 1.5 版本
DefaultDirName={pf}\我的程序
DefaultGroupName=我的程序

[Files]
; 打包实现闪屏和背景音乐所必需的插件文件
Source: "C:\Documents and Settings\Administrator\桌面\NSISADDIN\NSISADDIN\callnsis.dll"; DestDir: "{tmp}"; Flags:

dontcopy
Source: "C:\Documents and Settings\Administrator\桌面\NSISADDIN\NSISADDIN\NewAdvSplash.dll"; DestDir: "{tmp}";

Flags: dontcopy
Source: "C:\Documents and Settings\Administrator\桌面\NSISADDIN\NSISADDIN\Bass.dll"; DestDir: "{tmp}"; Flags:

dontcopy
; 打包闪屏和背景音乐素材文件:闪屏图像文件 bmp、gif 或者 jpg 格式, 音乐文件 MP3、WAV 格式
Source: "C:\Documents and Settings\Administrator\桌面\NSISADDIN\NSISADDIN\splash.gif"; DestDir: "{tmp}"; Flags:

dontcopy
Source: "C:\Documents and Settings\Administrator\桌面\NSISADDIN\NSISADDIN\mymusic.mp3"; DestDir: "{tmp}"; Flags:

dontcopy
; 以下打包软件本身的文件
; 请自己加上

; 以下是安装脚本的其它段代码
; 请自己加上


[Code]
Type
HSAMPLE = DWORD;
HCHANNEL = DWORD;

var
MusicSwitchLabel0, MusicSwitchLabel1, MusicSwitchLabel2: TNewStaticText;
sample: HSAMPLE;
channel: HCHANNEL;

// 以下是所调用的插件函数
function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: string): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

procedure BASS_Free();
external 'BASS_Free@files:BASS.dll stdcall delayload';

function BASS_SampleLoad(mem: BOOL; f: PChar; offset, length, max, flags: DWORD): HSAMPLE;
external 'BASS_SampleLoad@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_ChannelPause(handle: DWORD): BOOL;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';

function BASS_SampleGetChannel(handle: HSAMPLE; onlynew: BOOL): HCHANNEL;
external 'BASS_SampleGetChannel@files:BASS.dll stdcall delayload';

procedure callplug(parentwnd: Integer;

pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PChar);
external 'callplug@files:callnsis.dll stdcall delayload';

// 以下是点击“关于”按钮后的响应函数
procedure AboutButtonOnClick(Sender: TObject);
begin
MsgBox('这是你的信息。'#13#10'这是你的信息的第二行。', mbInformation, MB_OK);
end;

// 以下是点击“打开音乐”按钮后的响应函数
procedure MusicSwitchLabel1OnClick(Sender: TObject);
begin
BASS_ChannelPlay(channel, false);
MusicSwitchLabel1.Font.Color := clGray;
MusicSwitchLabel2.Font.Color := clBlue;
end;

// 以下是点击“关闭音乐”按钮后的响应函数
procedure MusicSwitchLabel2OnClick(Sender: TObject);
begin
BASS_ChannelPause(channel);
MusicSwitchLabel2.Font.Color := clGray;
MusicSwitchLabel1.Font.Color := clBlue;
end;

// 安装向导初始化函数
procedure InitializeWizard();
var
AboutButton: TButton;
BGMusicFile, SplashFile: string;
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;

// 创建文字标签“音乐:”
MusicSwitchLabel0 := TNewStaticText.Create(WizardForm);
MusicSwitchLabel0.Left := AboutButton.Left + ScaleX(90);
MusicSwitchLabel0.Top := WizardForm.CancelButton.Top + ScaleY(3);
MusicSwitchLabel0.Width := ScaleX(30);
MusicSwitchLabel0.Height := ScaleY(12);
MusicSwitchLabel0.Font.Color := clRed;
MusicSwitchLabel0.Caption := '音乐:';
MusicSwitchLabel0.Parent := WizardForm;

// 创建文字标签作为“打开音乐”按钮(采用 Webdings 字体中的播放符号)
MusicSwitchLabel1 := TNewStaticText.Create(WizardForm);
MusicSwitchLabel1.Left := MusicSwitchLabel0.Left + ScaleX(33);
MusicSwitchLabel1.Top := MusicSwitchLabel0.Top - ScaleY(3);
MusicSwitchLabel1.Width := ScaleX(20);
MusicSwitchLabel1.Height := ScaleY(12);
MusicSwitchLabel1.Font.Color := clGray;
MusicSwitchLabel1.Font.Name := 'webdings';
MusicSwitchLabel1.Font.Size := -15;
MusicSwitchLabel1.Cursor := crCross;
MusicSwitchLabel1.Caption := #52
MusicSwitchLabel1.ShowHint:= true;
MusicSwitchLabel1.Hint:= '打开音乐';
MusicSwitchLabel1.OnClick := @MusicSwitchLabel1OnClick;
MusicSwitchLabel1.Parent := WizardForm;

// 创建文字标签作为“关闭音乐”按钮(采用 Webdings 字体中的暂停符号)
MusicSwitchLabel2 := TNewStaticText.Create(WizardForm);
MusicSwitchLabel2.Left := MusicSwitchLabel1.Left + ScaleX(20);
MusicSwitchLabel2.Top := MusicSwitchLabel0.Top - ScaleY(3);
MusicSwitchLabel2.Width := ScaleX(20);
MusicSwitchLabel2.Height := ScaleY(12);
MusicSwitchLabel2.Font.Color := clBlue;
MusicSwitchLabel2.Font.Name := 'webdings';
MusicSwitchLabel2.Font.Size := -15;
MusicSwitchLabel2.Cursor := crCross;
MusicSwitchLabel2.Caption := #59
MusicSwitchLabel2.ShowHint:= true;
MusicSwitchLabel2.Hint:= '关闭音乐';
MusicSwitchLabel2.OnClick := @MusicSwitchLabel2OnClick;
MusicSwitchLabel2.Parent := WizardForm;

// 释放临时文件
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('CallNSIS.DLL');
ExtractTemporaryFile('NewAdvSplash.DLL');
ExtractTemporaryFile('mymusic.mp3');
ExtractTemporaryFile('splash.gif');

BGMusicFile := ExpandConstant('{tmp}\mymusic.mp3');
SplashFile := ExpandConstant('{tmp}\splash.gif');

// 播放背景音乐
if not BASS_Init(-1,44100,0,0,'') then
BASS_Free;
sample := BASS_SampleLoad(false, PChar(BGMusicFile), 0, 0, 1, 4);
if sample<>0 then
begin
channel:= BASS_SampleGetChannel(sample, false);
BASS_ChannelPlay(channel, true);
end;

// 闪屏:显示时间 1600、淡入 800、淡出 500、透明颜色 -2 (表示 gif 图像本身透明)
callplug(0,ExpandConstant('{tmp}\NewAdvSplash.dll'),'show','1600','800','500','-2',SplashFile,'','','','','');

// 以下是安装向导初始化函数的其它代码
// 请自己加上
end;

// 以下是其它 CODE 段代码








水纹效果


Inno Setup 编程技术全图文教程(转载) - pony - pony的博客 附件: 您所在的用户组无法下载或查看附件







高级教程:



在安装界面的最上方会出现正在安装什么游戏?一层不变会让人厌倦来试试看这个?还有很多设定有兴趣的高手自己看看~

inno目录下有个Default.isl 打开编辑看看,这个是界面设定,最好先备份错了修改错了再覆盖回去

图片看看





[Messages]

; *** 应用程序标题
SetupAppTitle=正在安装中_请稍等(默认不是这个这个是我修改过的)
SetupWindowTitle=正在安装中_请稍等- %1
UninstallAppTitle=卸载
UninstallAppFullTitle=%1 卸载


这篇关于Inno Setup 编程技术全图文教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/431861

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

PHP APC缓存函数使用教程

APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。(Linux APC扩展安装) 系统缓存 它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记。如果未过期,则使用缓存的中间代码运行。默认缓存 3600s(一小时)。但是这样仍会浪费大量C

Qt多语种开发教程

Qt作为跨平台的开发工具,早已应用到各行各业的软件开发中。 今天讲讲,Qt开发的正序怎么做多语言开发。就是说,你设置中文,就中文显示;设置英语就英文显示,设置繁体就繁体显示,设置发育就显示法语等。 开发环境(其实多语种这块根环境没太大关系):win10,Qt.5.12.10 一.先用QtCreator创建一个简单的桌面程序 1.工程就随便命名“LanguageTest”,其他默认。 2.在设计师