zoukankan      html  css  js  c++  java
  • (转)Inno Setup入门(十四)——替换安装程序和卸载程序的图标

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250937
    通常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;

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

    安装文件

  • 相关阅读:
    Socket基本介绍和实际应用
    自定义流水布局(UICollectionViewFlowLayout的基本使用)
    UIMenuController 简单示例 (Swift)
    继续坚持
    获取手机信息(UIDevice、NSBundle、NSLocale)
    iOS 远程推送 根据后台推送内容的不同跳转指定页面
    定制多样式二维码
    二维码扫描和应用跳转
    iOS开发网络篇—Socket编程
    iOS开发中常用英语单词和句子整理(持续更新)
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/3884539.html
Copyright © 2011-2022 走看看