2019.11.28工作记录——InstallShield制作windriver驱动安装包

工作记录——InstallShield制作windriver驱动安装包

之前工作中生成了windriver1221的PCI驱动文件,现在要将驱动文件.INF打包为安装包,使未安装windriver的电脑能够直接安装windriver生成的驱动并调用wdapi库进行硬件测试。

具体步骤如下:

第一步,安装InstallShield

制作安装包需要专业的安装包制作软件,我选用了InstallShield2015版本。安装完成后打开。

P.S.开InstallShield2015后我的软件会弹窗询问是否需要Install InstallShield Pack 2,我选择不安装,对后面安装包的制作并没有感觉到影响。

第二步,创建安装包工程

打开InstallShield2015,在界面左侧选择create a new project。
在这里插入图片描述
在弹出界面中选择InstallScript MSI Project,填写自己的工程名称和路径。
在这里插入图片描述
点击OK后进入安装包制作流程界面。

第三步,安装包制作流程

创建新工程完成后进入Project Assistant界面,这是流程图化的安装包设置界面。
在这里插入图片描述
基本流程为下面的一排图标一个个点过去进行设置。
第一个Application Information是设置信息,用于给你填写公司名,版本号,网站信息等,也可以选择安装包的图标,不关键,视自己需求和驱动版本填写即可。
在这里插入图片描述
第二个Installation Requirements用于设置安装包安装环境,主要是设置安装包支持的系统环境和安装必需的软件,视需求勾选。
在这里插入图片描述
P.S.这里我勾选选项中没有Windows10系统,但是我制作的安装包在Windows10系统中也能安装。

第三个Installation Architecture是用来设置安装包中的自定义安装选项的,功能类似于安装VS软件时你可以选择安装全部功能还是只安装你需要的语言包,但是由于我要安装的驱动软件只有一个,所有这项功能我没有详细了解。
在这里插入图片描述
第四个Application Files是关键步骤,其主要功能是导入安装包软件中需要用到的所有文件,我所需要的是一个安装windriver生成驱动的安装程序,所以需要的文件包括:目标驱动.INF ; windriver1221.INF ; windriver1221.cat ; windriver1221.sys ; wdreg.exe 这5个文件。

其中目标驱动文件由windriver生成后保存在电脑中,windriver1221.INF ,windriver1221.cat , windriver1221.sys 这三个文件在你的windriver安装路径下的redist文件夹中,wdreg.exe在安装路径下util文件夹中。

在这里插入图片描述
在左侧选择放置文件的目标文件夹,我选择的是My Product Name文件夹,需要注意文件夹名后的【】中的INSTALLDIR,这个INSTALLDIR是后面安装包制作编译中非常重要的路径,因为要调用你导入的文件需要进入相应的安装包路径,所以安装包安装时要调用刚刚的wdreg.exe文件时,就需要先进入这个INSTALLDIR路径,也就是说你导入文件的位置要自己记住。
选择完路径后在右侧空白处右击并点击Add,然后将自己电脑中刚刚提到的必需的文件导入进去即可。

第五个Application Shortcuts是用于设置安装包中的那个“在桌面/开始菜单中生成快捷方式”的选项和安装完成后快捷方式的图标的,但是我只需要安装驱动,不需要快捷方式,所以可以不进行设置。
在这里插入图片描述
第六个Application Registry是有些安装包在安装时所用的文件有时需要提前进行Windows系统注册,我这里安装驱动不需要。
在这里插入图片描述

第七个Installation Localizations用于设置安装包语言,建议使用英文English,因为好像勾选中文需要下载额外的语言包(不确定)。
在这里插入图片描述
第八个Build Installation是最后一步,用于release一个完整的setup.exe,即我们需要的安装包程序,但是现在还不能直接release,需要对我们导入的文件进行安装流程的代码编写。

第四步,安装包代码编译

点击上方的Installation Designer,进入安装包设计管理器,并且点击Behavior and Logic ->InstallScript。
在这里插入图片描述
这里我们可以开始编写关于我们安装包的安装步骤的具体代码,在我这个项目中,我需要调用wdreg.exe这个程序,来对windriver1221.INF和目标驱动.INF这两个INF文件进行安装。(注意顺序!!!安装时先安装windriver1221.INF,但卸载时需要后卸载windriver1221.INF!
所以理论上安装的具体流程为:
1.打开windows命令行(cmd),
2.在命令行中进入安装包文件路径,
3.让cmd命令行执行

wdreg  -inf  windriver1221.inf  install
wdreg  -inf  目标驱动.inf  install

这两条指令(顺序不可改)

同理,卸载流程为:
1.打开windows命令行(cmd),
2.在命令行中进入安装包文件路径,
3.让cmd命令行执行

wdreg  -inf  目标驱动.inf  uninstall
wdreg  -inf  windriver1221.inf  uninstall

这两条指令(顺序不可改)

所以根据这两个流程编写代码。

首先是安装流程,安装流程在整个安装包流程中位于 OnFirstUIAfter位置,所以在上部选择Setup.Rul -> After Move Data -> OnFirstUIAfter,点击后会自动在代码下方出现一段OnFirstUIAfter的初始代码段。

在这里插入图片描述

在function OnFirstUIAfter()中定义安装包路径

STRING szDir;
szDir = INSTALLDIR;

这里的路径就是刚刚我们导入文件时要记住的路径,然后根据路径调用cmd命令行实现安装操作:


```cpp
StrRemoveLastSlash(szDir);
ChangeDirectory(szDir);
LaunchAppAndWait("cmd", "/c wdreg -inf windrvr1221.inf install" , WAIT); // on wdreg.exe
LaunchAppAndWait("cmd" , "/c wdreg -inf Etc7024wd1221.inf install" , WAIT);

加入这些代码后安装流程代码就完成了。
在这里插入图片描述
卸载流程跟安装流程很像,只是卸载流程在安装包完整流程的OnMainUIAfter部分,所以要再加一个Setup.Rul -> After Move Data -> OnMainUIAfter代码段,再将两个INF文件的卸载顺序换一下即可。
在这里插入图片描述
代码编写完成后回到刚刚流程图的第八个Build Installation,选择Single Executable,再点击Build Installations,或者直接在上面工具栏Build中进行build,build成功没有错误即完成了安装包的制作。
在这里插入图片描述
制作完成的setup.exe程序就在你的工程目录\Product Configuration 1\Release 1\DiskImages\DISK1中,就是那个setup.exe程序。
在这里插入图片描述
setup.exe就是完整安装包,安装驱动不需要文件夹中的任何其他文件,只需要运行setup.exe即可。

发布了25 篇原创文章 · 获赞 6 · 访问量 1421

猜你喜欢

转载自blog.csdn.net/weixin_43948991/article/details/103287115
今日推荐