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即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章