• Inno Setup 替换安装程序和卸载程序的图标


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

    Inno Setup入门(十四)——替换安装程序和卸载程序的图标 - Castor - 趁年轻,多折腾~~

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

    [Setup]

    ;自定义程序安装包图标

    SetupIconFile=安装程序图标.ico

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

    [Setup]

    ;自定义程序安装包图标

    SetupIconFile=F:\安装程序图标.ico

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

    1.准备好图标文件。

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

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


    [Files]
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
    ;卸载图标位置
    Source: "F:\图标.ico"; Flags: solidbreak dontcopy
    ;卸载插件位置
    Source: "F:\UpdateIcon.dll"; Flags: solidbreak dontcopy

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


    [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;
    procedure CurStepChanged(CurStep: TSetupStep);
    var
      sIcon: String;
    begin
    //注意: 替换卸载程序的图标,必须是在卸载程序生成之前!
    //建议安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!
      if CurStep=ssInstall then
      begin
        sIcon:= ExpandConstant('{tmp}\图标.ico'); //定义卸载图标
    //  ExtractTemporaryFile('UpdateIcon.dll');
        ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标
    //  要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!
        if UpdateUninstIcon(sIcon) then  //替换卸载图标
               MsgBox('卸载程序图标 替换成功!', mbInformation, MB_OK)
        else MsgBox('卸载程序图标 替换失败!', mbError, MB_OK);
    end;
    end;

     

    附上注释图片,方便了解代码,如下图:

     

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

    Inno Setup入门(十四)——替换安装程序和卸载程序的图标 - Castor - 趁年轻,多折腾~~

     安装文件

    Inno Setup入门(十四)——替换安装程序和卸载程序的图标 - Castor - 趁年轻,多折腾~~

     安装目录

    转自:http://www.360doc.com/content/13/0327/15/4221543_274261643.shtml

  • 相关阅读:
    PHP实现发送模板消息(微信公众号版)
    laravel 跨域问题
    微信授权登录
    支付demo2
    支付demo1
    微信支付注意点
    微信支付方式区分
    debian,dietpi,linux中文乱码解决方法
    嵌入式应该深入专研STM32还是继续学习linux内核驱动呢?
    arduino下载ESP8266开发板的方法
  • 原文地址:https://www.cnblogs.com/xiurui12345/p/3094665.html
Copyright © 2020-2023  润新知