• Inno Setup入门(十四)——替换安装程序和卸载程序的图标


    通常Inno生成的安装文件的图标是一个光盘和显示器,如下图。同时,程序安装好之后,在安装目录下的卸载程序的图标也是一样的,其实我们也可以自己修改。

    首先生成的安装文件图标。这个比较简单,只需要在Setup段中添加相应的语句即可:

    SetupIconFile=jiong.ico

    该语句指定了输出文件的图标,注意如果图标不是和脚本在同一目录下的话,需要提供完整的路径。

    然后是卸载程序的图标。事实上,把包含前面替换语句的程序编译之后,将其安装,会发现卸载程序其实也安装程序的图标一样被替换了,即安装程序自动实现了图标的替换工作。现在的问题是,如果想和安装的图标不一样,该如何处理?实现方法如下:

    1.准备好图标文件,和脚本放入同意目录下。

    2.使用一个名为UpdateIcon.dll的插件

    3.添加Code段,代码如下:

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

    编译之后就可以了。下面是输出文件和安装好之后的目录:

    安装文件

    安装目录

  • 相关阅读:
    Android 按键消息处理Android 按键消息处理
    objcopy
    SQLite多线程读写实践及常见问题总结
    android动画坐标定义
    Android动画效果translate、scale、alpha、rotate
    Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
    Flatten Binary Tree to Linked List
    Distinct Subsequences
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/atuo/p/4777680.html
Copyright © 2020-2023  润新知