如何更改Inno Setup生成的卸载程序的名字与图标

如何更改Inno Setup生成的卸载程序的名字与图标,第1张

一、修改卸载程序图标

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

 

procedure 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、 编译之后就可以了。

二、修改卸载程序的名字

以下为引用Inno Setup 脚本的内容, 该示例脚本显示自定义卸载文件的名称(默认为 unins000.exe,unins001.exe 等等),自己注意看注释说明。

 

[Setup]  

AppName=自定义卸载文件名示例程序  

AppVerName=自定义卸载文件名示例程序 1.0  

DefaultDirName={pf}/自定义卸载文件名示例程序  

DefaultGroupName=自定义卸载文件名示例程序  

[Files]  

Source: "MyProg.exe" DestDir: "{app}"  

Source: "MyProg.hlp" DestDir: "{app}"  

Source: "Readme.txt" DestDir: "{app}"  

[CODE]  

procedure CurStepChanged(CurStep: TSetupStep)  

var  

uninspath, uninsname, NewUninsName, MyAppName: string  

begin  

if CurStep=ssDone then  

begin  

// 指定新的卸载文件名(不包含扩展名),请相应修改!  

NewUninsName := '卸载'  

// 应用程序名称,与 [SEUTP] 段的 AppName 必须一致,请相应修改!  

MyAppName := '自定义卸载文件名示例程序'  

// 以下重命名卸载文件  

uninspath:= ExtractFilePath(ExpandConstant('{uninstallexe}'))  

uninsname:= Copy(ExtractFileName(ExpandConstant('{uninstallexe}')),1,8)  

RenameFile(uninspath + uninsname + '.exe', uninspath + NewUninsName + '.exe')  

RenameFile(uninspath + uninsname + '.dat', uninspath + NewUninsName + '.dat')  

// 以下修改相应的注册表内容  

if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1') then  

begin  

RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1', 'UninstallString', '"' + uninspath + NewUninsName + '.exe"')  

RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1', 'QuietUninstallString', '"' + uninspath + NewUninsName + '.exe" /SILENT')  

end  

end  

end

运行保护中吧 你可以任务管理器那关闭,或者解锁后在试试(如图) 然后是找到文件夹,删除或粉碎 可以用类似腾讯电脑管家的工具粉碎 打开腾讯电脑管家——工具箱——文件粉碎 你还需要清理下注册表,这样就OK了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7956057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存