使用VC6.0做了一个通过主机USB接口与单板通讯的上位机程序。单板上的USB控制器是cypress的CY68013A.
现在做的上位机程序在已安装了cypress官方的开发环境下(其实就是安装了CY68013A的驱动)可以实现同单板的通讯,
我现在是想通过InstallShield把cypress官方的驱动组件(XX.sys与inf文件)跟自己的上位机程序打包成一个PC上的安装包,请有经验的道友指点一下,如果有Step by step的生成步骤,十分感激。
如果是南京的朋友可以请吃饭,or有劳酬请教,QQ:94524539
现在做的上位机程序在已安装了cypress官方的开发环境下(其实就是安装了CY68013A的驱动)可以实现同单板的通讯,
我现在是想通过InstallShield把cypress官方的驱动组件(XX.sys与inf文件)跟自己的上位机程序打包成一个PC上的安装包,请有经验的道友指点一下,如果有Step by step的生成步骤,十分感激。
如果是南京的朋友可以请吃饭,or有劳酬请教,QQ:94524539
用InstallShield开发驱动安装程序的方法
这是一个MP3 Player在win98下的驱动程序安装包的例子,开发工具是InstallShield6.2。
其功能是实现Driver的自动安装,原始文件是StMp3Rec.inf,StUms.inf,StMp3Rec.sys,
StUms.sys,StUmsPdr.pdr。供大家参考,以便快速掌握InstallShield开发98驱动安装程序的方法。 创建驱动程序包的步骤
一、用向导生成一个工程。 二、创建Files Groups
1、Inf Files
包含文件:StMp3Rec.inf, StUms.inf, 安装目录:\inf 2、Sys Files
包含文件:StMp3Rec.sys, StUms.sys, 安装目录:\System32\Drivers 3、Pdr Files
包含文件:StUms.pdr, 安装目录:\iosubsys 4、App Files
包含文件:无 三、创建Componets
1. Inf Files 2、Sys Files 3、Pdr Files 4、App Files 并指定它们和Files Groups的组件一一对应。 四、创建卸载菜单
新建Uninstall快捷方式,Target: \setup.exe
Install Conditions: App Files
五、写InstallScrip代码
////////////////////////////////////////////////////////////////////////////////
//
// File Name: Setup.rul
//
// Description: InstallShield script
//
// Comments: This script was generated based on the selections you made in
// the Project Wizard. Refer to the help topic entitled "Modify
// the script that the Project Wizard generates" for information
// on possible next steps.
//
////////////////////////////////////////////////////////////////////////////////
// Include header files #include "ifx.h" ////////////////////// string defines //////////////////////////// //////////////////// installation declarations /////////////////// // ----- DLL function prototypes -----
// your DLL function prototypes
// ---- script function prototypes -----
// your script function prototypes // your global variables //////////////////////////////////////////////////////////////////////////////
//
// FUNCTION: OnBegin
//
// EVENT: Begin event is always sent as the first event during installation.
//
//////////////////////////////////////////////////////////////////////////////
function OnBegin()
begin
if (!(SYSINFO.WIN9X.bWin98)) then
MessageBox("The installation only for Windows 98.",INFORMATION);
abort;
endif;
//delete device infomation
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBDeleteKey("Enum\\USB\\VID_066F&PID_8000");
end; //////////////////////////////////////////////////////////////////////////////
//
// FUNCTION: OnFirstUIBefore
//
// EVENT: FirstUIBefore event is sent when installation is run for the first
// time on given machine. In the handler installation usually displays
// UI allowing end user to specify installation parameters. After this
// function returns, ComponentTransferData is called to perform file
// transfer.
//
///////////////////////////////////////////////////////////////////////////////
function OnFirstUIBefore()
number nResult,nSetupType;
string szTitle, szMsg;
LIST listStartCopy;
begin
// TO DO: if you want to enable background, window title, and caption bar title
// SetTitle( @TITLE_MAIN, 24, WHITE );
// SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION );
// Enable( FULLWINDOWMODE );
// Enable( BACKGROUND );
// SetColor(BACKGROUND,RGB (0, 128, 128)); TARGETDIR = PROGRAMFILES ^@COMPANY_NAME ^@PRODUCT_NAME; Dlg_Start:
// beginning of dialogs label Dlg_SdWelcome:
szTitle = "";
szMsg = "";
nResult = SdWelcome( szTitle, szMsg );
if (nResult = BACK) goto Dlg_Start; // setup default status
SetStatusWindow(0, "");
Enable(STATUSEX);
StatusUpdate(ON, 100); return 0;
end; ///////////////////////////////////////////////////////////////////////////////
//
// FUNCTION: OnFirstUIAfter
//
// EVENT: FirstUIAfter event is sent after file transfer, when installation
// is run for the first time on given machine. In this event handler
// installation usually displays UI that will inform end user that
// installation has been completed successfully.
//
///////////////////////////////////////////////////////////////////////////////
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2;
NUMBER nReserved;
begin
Disable(STATUSEX); ShowObjWizardPages(NEXT); szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
nReserved = 0;
SdFinishReboot(szTitle, szMsg1, SYS_BOOTMACHINE,szMsg2,nReserved);
end;
///////////////////////////////////////////////////////////////////////////////
//
// FUNCTION: OnMoving
//
// EVENT: Moving event is sent when file transfer is started as a result of
// ComponentTransferData call, before any file transfer operations
// are performed.
//
///////////////////////////////////////////////////////////////////////////////
function OnMoving()
string szAppPath;
begin
// Set LOGO Compliance Application Path
// TO DO : if your application .exe is in a subfolder of TARGETDIR then add subfolder
szAppPath = TARGETDIR;
RegDBSetItem(REGDB_APPPATH, szAppPath);
RegDBSetItem(REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY);
end; ///////////////////////////////////////////////////////////////////////////////
//
// FUNCTION: OnMaintUIAfter
//
// EVENT: MaintUIAfter event is sent after file transfer, when end user runs
// installation that has already been installed on the machine. Usually
// this happens through Add/Remove Programs applet.
// In the handler installation usually displays UI that will inform
// end user that maintenance/uninstallation has been completed successfully.
//
///////////////////////////////////////////////////////////////////////////////
function OnMaintUIAfter()
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
NUMBER bOpt1, bOpt2;
begin
Disable(STATUSEX);
ShowObjWizardPages(NEXT); //Delete device information
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBDeleteKey("Enum\\USB\\VID_066F&PID_8000"); bOpt1 = FALSE;
bOpt2 = FALSE;
szMsg1 = SdLoadString(IFX_SDFINISH_MAINT_MSG1);
szTitle = SdLoadString(IFX_SDFINISH_MAINT_TITLE);
SdFinishEx(szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2);
end;
// --- include script file section ---
这个应该可以实现,我也没试过,以前我是用代码调用第三方的驱动安装程序,这个网址不需调用第三方的安装驱动的可执行程序,只要有inf相关的文件就可以安装
1.我有两个已经做好的驱动文件,分别是inf和sys文件,至于怎么开发出来,我暂时没去研究他。inf文件一般是微软硬件的配置信息文件,有特殊的格式。sys一般类似于dll动态库文件,老总这样给我打的比方,呵呵,这里借用他说的话。
2.打开Installshield12,在startpage中点击Create New Project,会弹出对话框,在Windows Installer目录下,选择Installscript MSI Project。
3.新建好工程名后,不用去理会Project Assisant过程,直接跳到Installation Designer。找到左边列表中的Orgnization,选中Setup Design,这时点击菜单Project中的Device Driver Wizard,硬件驱动安装向导。然后就会出现对话框,要求加入inf源文件,直接加入就是了,在点击下一步会发现,他自动加入了sys文件,Next,在Runtime Options using DIFx2.01,下的对话框,全选。有的文章介绍选1,3,5。我试过不成功。再点Next,有个Include all 。的选项,也勾上,最后finish。
4.修改路径,因为驱动文件一般是安装到系统目录下,这里要点击到该文件,选中Destation,在路径中选择SystemFolder,然后在后面输入/drivers.其意思是制定文件保存到windows//system32//drivers目录下。同样修改sys文件到该目录下。
5.脚本编辑,在列表框中的Behavior and Logic选中Istallscript,在UIAfter,添加LaunchAppWait()函数。注意路径要和上面指定一直。还有一个安装节名,刚开始搞不懂是什么东西,后来试了下名字后面有类似Install简写的文件,这个要在inf文件里找,我的文件后面是××××Is,替换到Default里面的内容。
6.所有工作都做完后,build all,执行。这时要把设备插上才能安装成功。