Inno Setup5 如何更改卸载图标(我做出来的安装程序和卸载的一样)我想把卸载图标换成别的。
发布网友
发布时间:2022-05-06 07:59
我来回答
共2个回答
热心网友
时间:2023-10-08 18:31
1.准备好图标文件,和脚本放入同意目录下。
2.使用一个名为UpdateIcon.dll的插件
3.添加Code段,代码如下:
//插件函数用法
//参数: 句柄(插件错误对话框的父句柄), exe文件完整路径名称, (exe文件中要替换的)图标资源名称, 图标文件的完整路径名称, (exe中要替换的图标资源所在)语系
//返回值: 成功 = Tr, 失败 = False
function UpdateIcon(const hWnd: Integer; const exeFileName, exeIcon, IcoFileName: String; wlangID: DWORD): Boolean;
external 'UpdateIcon@files:UpdateIcon.dll stdcall';
//替换卸载程序的图标
function UpdateUninstIcon(const IcoFileName: String): Boolean;
begin
//要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标,其它参数类似!
Result:= UpdateIcon(MainForm.Handle, '', '', IcoFileName, 0);
//替换卸载图标
end;
procere CurStepChanged(CurStep: TSetupStep);
var
sIcon: String;
begin
//注意: 替换卸载程序的图标,必须是在卸载程序生成之前!
//安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!
if CurStep=ssInstall then
begin
sIcon:= ExpandConstant('{tmp}\uninstall.ico'); //定义卸载图标
ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标
//要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!
UpdateUninstIcon(sIcon);//替换卸载图标
end;
end;
4、 编译之后就可以了。
热心网友
时间:2023-10-08 18:32
[code]
//插件函数用法:
//参数: 句柄(插件错误对话框的父句柄), exe文件完整路径名称, (exe文件中要替换的)图标资源名称, 图标文件的完整路径名称, (exe中要替换的图标资源所在)语系
//返回值: 成功 = True, 失败 = False
function UpdateIcon(const hWnd: Integer; const exeFileName, exeIcon, IcoFileName: String; wlangID: DWORD): Boolean;
external 'UpdateIcon@files:UpdateIcon.dll stdcall';
//替换卸载程序的图标
function UpdateUninstIcon(const IcoFileName: String): Boolean;
begin
// 要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!其它参数类似!
Result:= UpdateIcon(MainForm.Handle, '', '', IcoFileName, 0); //替换卸载图标
end;
procere CurStepChanged(CurStep: TSetupStep);
var
sIcon: String;
begin
//注意: 替换卸载程序的图标,必须是在卸载程序生成之前!
//建议安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!
if CurStep=ssInstall then
begin
sIcon:= ExpandConstant('{tmp}\uninst.ico'); //定义卸载图标
// ExtractTemporaryFile('UpdateIcon.dll');
ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标
// 要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!
if UpdateUninstIcon(sIcon) then //替换卸载图标
MsgBox('卸载程序图标 替换成功!', mbInformation, MB_OK)
else MsgBox('卸载程序图标 替换失败!', mbError, MB_OK);
end;
end;