InstallShield 制作INF驱动安装程序

题外话:
使用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是分开编译为两个安装包

如果知道方法的朋友请给我留言,大家共同进步,谢谢!文章来源地址https://uudwc.com/A/ov8z

原文地址:https://blog.csdn.net/qq_29729577/article/details/128641677

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年06月16日 15:38
物联网开发笔记(55)- 使用Micropython开发ESP32开发板之MQTT(消息队列遥测传输)实战
下一篇 2023年06月16日 15:38