inf文件做成exe文件来安装问题,请高手关注讨论!

mysisc 2004-11-22 03:11:40
系统为WIN2K,设备是一个端口设备,用厂商提供的inf和sys可以正确安装,
现在我想做成一个exe文件来安装驱动,用的是SetupCopyOEMInf函数

如下的代码可以在WINNT\inf目录下产生oem*.inf和oem*.PNF,可
是我重启系统后插入硬件设备,还是提示发现新硬件,然后还是要
指定文件位置,就和什么都没做安装新硬件一样
BOOL CSetupInfDlg::SetupInf(CString InfName)
{
if(!SetupCopyOEMInf(InfName,
NULL,
SPOST_PATH,
SP_COPY_DELETESOURCE,
NULL,
0,
NULL,
NULL ))
return 0;
else
return 1; //正常返回1,成功
}

void CSetupInfDlg::OnButton1()
{
bool IsSetupOK;
CString lpszValue;
lpszValue="C:\\OXSER_c.INF";
IsSetupOK = SetupInf(lpszValue);
}
//上面好象没有改注册表的任何地方,我想这种做法是否有问题?
...全文
202 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mysisc 2004-11-23
  • 打赏
  • 举报
回复
?????????
没人会吗?
我的做法有问题吗?
没人会吗?
我的做法有问题吗?
没人会吗?
我的做法有问题吗?
没人会吗?
我的做法有问题吗?没人会吗?
我的做法有问题吗?没人会吗?
我的做法有问题吗?没人会吗?
我的做法有问题吗?
没人会吗?
我的做法有问题吗?没人会吗?
我的做法有问题吗?没人会吗?
我的做法有问题吗?
mysisc 2004-11-22
  • 打赏
  • 举报
回复
还是没有办法搞定
kingzai 2004-11-22
  • 打赏
  • 举报
回复
以上是实现自动安装的代码,不关inf什么事。
mysisc 2004-11-22
  • 打赏
  • 举报
回复
拷备的句子?哪句?
[SourceDisksNames]
1=%drvDisk%,,

[SourceDisksFiles]
oxser.vxd=1
oxserui.dll=1
oxser.sys=1
oxui.dll=1

类似上面的是吗?没用
kingzai 2004-11-22
  • 打赏
  • 举报
回复
convert my attached code to VC
Q。怎样安装硬件的驱动而不让Windows弹出“指定.sys"的对话框?
A。在Win98下,将.inf拷到<WINDIR>Inf下,.sys拷到<WINDIR>System32Drivers下,并且删除<WINDIR>Inf下的DRVIDX.BIN和DRVDATA.BIN,再插入硬件。Win2K下,用SetupCopyOEMInf将.inf文件拷到<WINDIR>Inf下,并且.inf中不能有拷贝.inf的句子,否则,当插入第二个硬件时,系统仍然会提示找不到.sys。
mysisc 2004-11-22
  • 打赏
  • 举报
回复
我是想直接编成一个exe就行了,不用打包成exe,就是VC编译出来的就可以
kingzai 2004-11-22
  • 打赏
  • 举报
回复
i use intallshield to do this.my sample code:

GetSystemInfo (OS,nvResult,svResult); //Get system Operation system type
//Disable the component that not for windowsNT or Win2000
if (nvResult = IS_WINDOWSNT) then
// XCopyFile (SUPPORTDIR^"UKEY.inf",WINDIR^"inf",COMP_NORMAL|LOCKEDFILE);
szDllName = WINSYSDIR^"setupapi.dll";
UseDLL(szDllName);
bCopy =SetupCopyOEMInfA(SUPPORTDIR^"UKEY.inf",NULL,0,8,NULL,0,0,NULL) ;
UnUseDLL(szDllName);
// if (!bCopy) then
// exit;
// endif;
endif;
if (nvResult = IS_WINDOWS9X) then
bCopy=XCopyFile (SUPPORTDIR^"UKEY.sys",WINDIR^"system32\\drivers",COMP_NORMAL|LOCKEDFILE);
bCopy=XCopyFile (SUPPORTDIR^"UKEY.inf",WINDIR^"inf",COMP_NORMAL|LOCKEDFILE);
szDllName = WINSYSDIR^"kernel32.dll";
UseDLL(szDllName);
DeleteFileA(WINDIR^"Inf\\Drvidx.bin");
bDelete =DeleteFileA(WINDIR^"Inf\\Drvdata.bin");
UnUseDLL(szDllName);
// if (!bDelete) then
// exit;
// endif;
endif;

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧