转自:http://blog.csdn.net/weixin_29796711/article/details/72822052

用户在使用我们用windriver开发的硬件驱动时,需要先安装windriver的必备文件还有硬件的驱动,过程比较麻烦,为方便用户,可以将它们打包成一个安装程序,让用户一键安装即可。

下面将简单分享使用InstallShield打包安装程序(InstallShield版本为2010),关于InstallShield的教程网上资源很多,本文将不做具体介绍,文章最后会附上本人认为比较实用的两个教程。

一、制作安装包的步骤

Step 1:新建InstallShield工程

打开InstallShield,新建一个InstallScript MSI Project。

Basic MSI Projecet 不方便修改安装界面,InstallScript Project比较难用,很多都要自己写。对于我这种InstallShield初学者,我感觉InstallScript MSI Project比较适合自己。

Step 2: 打包必备文件(Windriver必备文件、硬件驱动文件、VC运行库)

在Installation Designer中,点击Setup Design,新建一个Feature->新建Component->设置component属性->将文件拉入Commponent的Files中

设置component属性:

添加windriver必备文件、硬件驱动文件:

添加VC 运行库:

Step 3 :安装文件、添加卸载快捷方式

在InstallScript添加Moved函数,在Moved函数中进行安装操作,参考我之前写的windriver pci驱动发布文章对文件进行安装,如下图所示

Step 4 :卸载

在InstallScript添加OnMaintUIBefore函数,在OnMaintUIBefore函数中进行卸载操作,参考我之前写的windriver pci驱动发布文章对文件进行卸载,如下图所示

Step 5 :修改安装界面

在InstallScript添加OnFirstUIBefore函数,在OnFirstUIBefore可以修改安装界面,具体自己根据需求修改

Step 5 :生成安装程序

点击Project Assistant->选择Build Installation->选择Single Executable(安装包比较小,生成.exe即可)->Build

生成后可在项目文件夹中找到Setup.exe(名字可改)

二、注意事项

1.制作64位安装包时要注意64位系统在运行32位程序时会把指定拷贝到system32的文件自动改为拷贝到SysWoW64下。

2.32位和64位系统对应的windriver必备文件不一样。分别安装32位和64位的windirver软件提取必备文件即可。

3.数字证书(申请比较麻烦,而且需要收费),如果没有数字安全证书,安装时会提醒Windows无法验证驱动软件的发布者,选择始终安装此驱动程序软件即可

三、两个参考教程

http://download.csdn.net/detail/weixin_29796711/9856608

http://download.csdn.net/detail/weixin_29796711/9856611

使用InstallShield打包windriver驱动-转的更多相关文章

  1. InstallShield打包设置相对路径

    InstallShield打包设置相对路径 在使用Installshield 打包安装文件时,添加打包文件时默认使用绝对路径,但是工程文件转移时(复制到其它位置时)编译时就会找不到安装文件,这样很不方 ...

  2. 用InstallShield 打包工具 打 Win32 程序 (depends.exe 用看程序都依赖了哪些dll)

    InstallShield 打包工具 1. 转载:http://blog.csdn.net/zhang_xinxiu/article/details/9099757 2. 转载:http://www. ...

  3. InstallShield打包,以及集成TFS、JenKins

    一. InstallShield打包脚本教程,这里面写的很详细了 [海洋女神原创]一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(一)---基本设置一 需要补充的是Insta ...

  4. 使用InstallShield打包VS程序

    使用InstallShield打包VS程序 InstallShield是微软自己的一个打包工具,这个打包工具,有其优势也有其弊端.其优势,可以很好且方便地将.NET平台的控件以及程序所需要的dll打包 ...

  5. 怎样用QT在windows环境通过编程卸载installShield打包的程序

    通常情况下,如果是一个完备的软件,我们可以通过启动软件的uninstaller.exe之类的程序来完成卸载.但是使用installShield打包的程序,本身可能并不含有这类卸载程序.此时,我们可以通 ...

  6. Installshield 打包安装包心得

     制作简单的安装软件 声明:下面的教程,是把读者当做完全没接触过IS的角度来制作的. 1. 启动InstallShield 12.建立一个InstallShield MSI Project,如图: 2 ...

  7. InstallShield打包

    使用2010部分汉化版(2010之后找不到更新的破解版本),主要用于打包桌面应用程序. 主要步骤: 1.3种主要的工程类型: Basic MSI,安装脚本不易使用. InstallScript,无法加 ...

  8. 更换用installshield打包生成exe文件的图标【转】

    最近在研究用installshield2010为自己做的产品打包,自己在网上找写资料,胡乱折腾,最后弄成了一个exe安装包,想要修改exe文件的图标,发现Basic MSI project 无法用in ...

  9. 用.net installshield打包程序时注册第三方控件

    制作打包程序时如果用到外部控件需要按以下方式操作: 1.将控件及控件所用到的所有DLL加入打包程序. 2.将控件的Register由vsdrfDoNotRegister改为vsdrfCOMSelfRe ...

随机推荐

  1. week4

    History:Commercialization and Growth course Explosive Growth of the Internet and Web The Year of the ...

  2. [转帖] Linux运维基础知识学习内容

    原作者地址:https://www.cnblogs.com/chenshoubiao/p/4793487.html 最近在学习 linux  对简单的命令有所掌握 但是 复杂的脚本 shell pyt ...

  3. CentOS系统下安装 LNAM环境

    系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian Linux系统 需要3GB以上硬盘剩余空间 128M以上内存,Xen的需要有SWAP,OpenVZ的另外 ...

  4. NOI&&NOIP知识点集萃

    更新日志 \(update:2019-3-4\) 更新了自为风月马前卒的后缀数组(省选不到一个月了,我才开始学后缀数组怕是要凉凉) \(update:2019-2-21\) 更新了一篇李超线段树的讲解 ...

  5. 杭高OI20190125 (genies出题)

    /* 当一个人先从自己的内心开始奋斗,他就开始迈向了成功 ——genies (朝阳的二愣子) */ HGOI寒假赛第一场,欢迎来自各种学校的各式各样的巨老233333 感觉自己好渺小.还是NOIP ( ...

  6. linux运维之分析日志相关命令(1)

    一.分析日志 1.查看有多少IP访问 awk '{print $1}' log_file|sort|uniq|wc -l 2.查看某一个页面被访问的次数 grep "/index.php&q ...

  7. 内置函数enumerate()

    enumerate是枚举的意思,顾名思义,enumerate()函数用来将一个可迭代序列生成一个enumerate对象,该enumerate对象的每个元素是由可迭代对象的索引编号和对应的元素组成的元祖 ...

  8. 【codevs1959】拔河比赛

    题目大意:给定一个有 N 个数的集合,将这 N 个数均分成两堆,求差值最小是多少. 题解:有关集合选数的问题,应该是背包问题,同时要求均分可知,选出的物品数目也应该是背包费用的一个维度,因此这是一个多 ...

  9. AIO 开始不定时的抛异常: java.io.IOException: 指定的网络名不再可用

    一天里会抛出几个这样的错误,但发现服务还在正常的运行. java.io.IOException: 指定的网络名不再可用. at sun.nio.ch.Iocp.translateErrorToIOEx ...

  10. c++并发编程之创建线程

    以boost为例.boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象: (2)explicit thread(const boost::functi ...