题外话:
使用INF文件制作经过签名的CAT文件可以参考如下博文:
https://blog.csdn.net/qq_29729577/article/details/113537243
回归正题:
本例使用InstallShield 2020版本
驱动文件准备
将INF、CAT、SYS等驱动相关文件放至同一目录下,本例为简单示例,文件如下:
新建工程
NewProject,新建InstallScript MSI工程
Project Assistant设置
-
Application Information
自行填写
-
Installation Requirements
默认都选No -
Installation Architecture
默认选No -
Application Files
先不填写 -
Application Shortcuts
默认不填 -
Application Registry
默认选No -
Installation Localization
简体中文即可
Installation Designer设置
1. 驱动设置
选择OGANIZATION下的Setup Design
删除默认项目DefaultFeature,选择PROJECT下的Device Driver
进入设备驱动向导
Device Driver Package选择驱动存放目录下的INF文件
System Architecture根据具体情况选择
下一页会自动列出目录下相关的驱动文件
下一页如下勾选即可
下一页选择平台
最后点击完成即可
2. 安装脚本设置
选择BEHAVIOR AND LOGIC中的InstallScript
选择Setup.Rul -> Before Move Data -> OnFirstUIBefore
去掉代码中不必要的过程,最终代码如下:
function OnFirstUIBefore()
NUMBER nResult, nSetupType, nvSize, nUser;
STRING szTitle, szMsg, szQuestion, svName, svCompany, szFile;
STRING szLicenseFile;
BOOL bCustom, bIgnore1, bIgnore2;
begin
// TO DO: if you want to enable background, window title, and caption bar title
// SetTitle( @PRODUCT_NAME, 24, WHITE );
// SetTitle( @PRODUCT_NAME, 0, BACKGROUNDCAPTION );
// Enable( FULLWINDOWMODE );
// Enable( BACKGROUND );
// SetColor(BACKGROUND,RGB (0, 128, 128));
// Added in InstallShield 15 - Show an appropriate error message if
// -removeonly is specified and the product is not installed.
if( REMOVEONLY ) then
Disable( DIALOGCACHE );
szMsg = SdLoadString( IDS_IFX_ERROR_PRODUCT_NOT_INSTALLED_UNINST );
SdSubstituteProductInfo( szMsg );
MessageBox( szMsg, SEVERE );
abort;
endif;
nSetupType = TYPICAL;
Dlg_SdWelcome:
szTitle = "";
szMsg = "";
nResult = SdWelcome(szTitle, szMsg);
if (nResult = BACK) goto Dlg_SdWelcome;
szTitle = "";
svName = "";
svCompany = "";
Dlg_SdStartCopy:
szTitle = "";
szMsg = "";
nResult = SdStartCopy2( szTitle, szMsg );
if (nResult = BACK) then
goto Dlg_SdWelcome;;
endif;
// Added in IS 2009 - Set appropriate StatusEx static text.
SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_FIRSTUI ) );
// setup default status
Enable(STATUSEX);
return 0;
end;
编译
最终进入Project Assistant的Build Installation进行编译即可
编译完成后,生成setup.exe,即可进入安装流程,安装流程如下:
总结
以上就是INF驱动简单的安装包制作流程,但还遇到一个问题尚未解决:
还未找到方法能够编译出同时适配x86和x64平台的安装包,目前x86和x64是分开编译为两个安装包
如果知道方法的朋友请给我留言,大家共同进步,谢谢!