100分 求解答 虚拟打印机中 INF文件与安装问题

giant7 2014-05-29 03:05:21
本人最近在开发虚拟打印机,这几天 写INF文件,但是安装之后始终打印成功。
请教各位高手, 本人INF文件里面哪些部分写法有问题,????
请帮忙指正,谢谢!


以下是INF文件的具体内容:

######################################################

;Hewlett-Packard LaserJet combined printer driver INF file for Windows XP and 2000
;Copyright Hewlett-Packard 2001

; List of supported printers, manufacturers
[Version]
Signature="$Windows NT$"
;Provider=%HP%
Provider=%VirtualPrinter%
ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318}
Class=Printer
DriverVer=1/18/2002,02.00.12.02

[ClassInstall32.NT]
AddReg=printer_class_addreg

[printer_class_addreg]
HKR,,,,%PrinterClassName%
HKR,,Icon,,"-4"
HKR,,Installer32,,"ntprint.dll,ClassInstall32"
HKR,,NoDisplayClass,,1
HKR,,EnumPropPages32,,"printui.dll,PrinterPropPageProvider"

; Manufacturer section.
;
; This section lists all of the manufacturers
; that we will display in the Dialog box
[Manufacturer]
%VirtualPrinter%=HP,NTx86.5.1

; Model sections
;
; Each section here corresponds with an entry listed in the
; [Manufacturer] section, above. The models will be displayed in the order
; that they appear in the INF file.
;
; Phase II
;
[HP.NTx86.5.1]
"HP LaserJet 4" = HPLJ4.GPD.XP ,Hewlett-PackardHP_La185F,HP_LaserJet_4
"HP LaserJet 4M" = HPLJ4M.GPD.XP ,HPHP_LaserJet_4MBBF9,HP_LaserJet_4M
"HP LaserJet 4 Plus" = HPLJ4PS.GPD.XP ,Hewlett-PackardHP_LaC3A1,HP_LaserJet_4_Plus
"HP LaserJet 4M Plus" = HP4MPLS.GPD.XP ,HPHP_LaserJet_4M_Plu959A,HP_LaserJet_4M_Plus
"HP LaserJet 4L" = HPLJ4L.GPD.XP ,Hewlett-PackardLaserC029,HP_LaserJet_4L
"HP LaserJet 4ML" = HPLJ4ML.GPD.XP ,HPHP_LaserJet_4MLB77A,HP_LaserJet_4ML
"HP LaserJet 4P" = HPLJ4P.GPD.XP ,Hewlett-PackardHP_La7EE2,HP_LaserJet_4P
"HP LaserJet 4MP" = HPLJ4MP.GPD.XP ,HPHP_LaserJet_4MP7E7B,HP_LaserJet_4MP
"HP LaserJet 4Si" = HPLJ4SI.GPD.XP ,Hewlett-PackardHP_La973E,HP_LaserJet_4Si
"HP LaserJet 4Si MX" = HP4SIMX.GPD.XP ,HPHP_LaserJet_4Si_MX9FF1,HP_LaserJet_4Si_MX
"HP LaserJet 4V" = HPLJ4V.GPD.XP ,Hewlett-PackardHP_La7C62,HP_LaserJet_4V
"HP LaserJet 4MV" = HPLJ4MV.GPD.XP ,HPHP_LaserJet_4MV7CFB,HP_LaserJet_4MV
"HP LaserJet 5" = HPLJ5.GPD.XP ,Hewlett-PackardHP_LaE238,HPHP_LaserJet_53828,HP_LaserJet_5
"HP LaserJet 5" = HPLJ5.GPD.XP ,HWP2140,HWP20F0,HP_LaserJet_5
"HP LaserJet 5M" = HPLJ5M.GPD.XP ,HPHP_LaserJet_5M2BF8,HP_LaserJet_5M
"HP LaserJet 5N" = HPLJ5N.GPD.XP ,HPHP_LaserJet_5N2AB8,HP_LaserJet_5N
"HP LaserJet 5L" = HPLJ5L.GPD.XP ,Hewlett-PackardHP_La27E2,HP_LaserJet_5L
"HP LaserJet 5P" = HPLJ5P.GPD.XP ,Hewlett-PackardHP_LaEEE3,HPHP_LaserJet_5P2238,HP_LaserJet_5P
"HP LaserJet 5P" = HPLJ5P.GPD.XP ,HWP20D0,HWP20F0,HPHP_LaserJet_5P2238,HP_LaserJet_5P
"HP LaserJet 5MP" = HPLJ5MP.GPD.XP ,HPHP_LaserJet_5MPBE2A,HP_LaserJet_5MP
"HP LaserJet 5Si" = HP5SI.GPD.XP ,Hewlett-PackardHP_La576F,HP_LaserJet_5Si
"HP LaserJet 5Si Mopier" = HPMOPY.GPD.XP ,HPHP_LaserJet_5Si_Mo7AC5,HP_LaserJet_5Si_Mopier
"HP LaserJet 5Si MX" = HP5SIM.GPD.XP ,HPHP_LaserJet_5Si_MX4EF0,HP_LaserJet_5Si_MX
"HP LaserJet 6L" = HPLJ6L.GPD.XP ,Hewlett-PackardHP_LaD7E2,HP_LaserJet_6L
"HP LaserJet 6MP" = HPLJ6MP.GPD.XP ,HPHP_LaserJet_6MPBEDA,HP_LaserJet_6MP
"HP LaserJet 6P" = HPLJ6P.GPD.XP ,Hewlett-PackardHP_La1EE3,HP_LaserJet_6P
"HP LaserJet 6P" = HPLJ6P.GPD.XP ,HWP21A0,HWP20D0,HP_LaserJet_6P


[HP]
"HP LaserJet 4" = HPLJ4.GPD.W2K ,Hewlett-PackardHP_La185F,HP_LaserJet_4
"HP LaserJet 4M" = HPLJ4M.GPD.W2K ,HPHP_LaserJet_4MBBF9,HP_LaserJet_4M
"HP LaserJet 4 Plus" = HPLJ4PS.GPD.W2K ,Hewlett-PackardHP_LaC3A1,HP_LaserJet_4_Plus
"HP LaserJet 4M Plus" = HP4MPLS.GPD.W2K ,HPHP_LaserJet_4M_Plu959A,HP_LaserJet_4M_Plus
"HP LaserJet 4L" = HPLJ4L.GPD.W2K ,Hewlett-PackardLaserC029,HP_LaserJet_4L
"HP LaserJet 4ML" = HPLJ4ML.GPD.W2K ,HPHP_LaserJet_4MLB77A,HP_LaserJet_4ML
"HP LaserJet 4P" = HPLJ4P.GPD.W2K ,Hewlett-PackardHP_La7EE2,HP_LaserJet_4P
"HP LaserJet 4MP" = HPLJ4MP.GPD.W2K ,HPHP_LaserJet_4MP7E7B,HP_LaserJet_4MP
"HP LaserJet 4Si" = HPLJ4SI.GPD.W2K ,Hewlett-PackardHP_La973E,HP_LaserJet_4Si
"HP LaserJet 4Si MX" = HP4SIMX.GPD.W2K ,HPHP_LaserJet_4Si_MX9FF1,HP_LaserJet_4Si_MX
"HP LaserJet 4V" = HPLJ4V.GPD.W2K ,Hewlett-PackardHP_La7C62,HP_LaserJet_4V
"HP LaserJet 4MV" = HPLJ4MV.GPD.W2K ,HPHP_LaserJet_4MV7CFB,HP_LaserJet_4MV
"HP LaserJet 5" = HPLJ5.GPD.W2K ,Hewlett-PackardHP_LaE238,HPHP_LaserJet_53828,HP_LaserJet_5
"HP LaserJet 5" = HPLJ5.GPD.W2K ,HWP2140,HWP20F0,HP_LaserJet_5
"HP LaserJet 5M" = HPLJ5M.GPD.W2K ,HPHP_LaserJet_5M2BF8,HP_LaserJet_5M
"HP LaserJet 5N" = HPLJ5N.GPD.W2K ,HPHP_LaserJet_5N2AB8,HP_LaserJet_5N
"HP LaserJet 5L" = HPLJ5L.GPD.W2K ,Hewlett-PackardHP_La27E2,HP_LaserJet_5L
"HP LaserJet 5P" = HPLJ5P.GPD.W2K ,Hewlett-PackardHP_LaEEE3,HPHP_LaserJet_5P2238,HP_LaserJet_5P
"HP LaserJet 5P" = HPLJ5P.GPD.W2K ,HWP20D0,HWP20F0,HPHP_LaserJet_5P2238,HP_LaserJet_5P
"HP LaserJet 5MP" = HPLJ5MP.GPD.W2K ,HPHP_LaserJet_5MPBE2A,HP_LaserJet_5MP
"HP LaserJet 5Si" = HP5SI.GPD.W2K ,Hewlett-PackardHP_La576F,HP_LaserJet_5Si
"HP LaserJet 5Si Mopier" = HPMOPY.GPD.W2K ,HPHP_LaserJet_5Si_Mo7AC5,HP_LaserJet_5Si_Mopier
"HP LaserJet 5Si MX" = HP5SIM.GPD.W2K ,HPHP_LaserJet_5Si_MX4EF0,HP_LaserJet_5Si_MX
"HP LaserJet 6L" = HPLJ6L.GPD.W2K ,Hewlett-PackardHP_LaD7E2,HP_LaserJet_6L
"HP LaserJet 6MP" = HPLJ6MP.GPD.W2K ,HPHP_LaserJet_6MPBEDA,HP_LaserJet_6MP
"HP LaserJet 6P" = HPLJ6P.GPD.W2K ,Hewlett-PackardHP_La1EE3,HP_LaserJet_6P
"HP LaserJet 6P" = HPLJ6P.GPD.W2K ,HWP21A0,HWP20D0,HP_LaserJet_6P

; OEM URLS
;
; This sections gives the URL for manufacturers found in the Manufacturers section
[OEM URLS]
%HP% = "http://go.microsoft.com/fwlink/?LinkID=37&prd=10798&sbp=Printers"

;
; MS Driver Core installs
;
; These sections are used by Printer OEMs to install MS provided drivers

; Installer Sections
;
; These sections control file installation, and reference all files that
; need to be copied. The section name will be assumed to be the driver
; file, unless there is an explicit DriverFile section listed.
;
; Note: Pulling HPLJ4.GPD via Needs= directive to get pcl5eres.dll from XP
; drivers.cab file due to XP defect whereby this file wasn't listed
; This also takes care of imgport.dll, ttfsub.gpd, UNIDRV sections
; but unavoidably brings with it the unneeded hplj4.gpd file.
;
; In the case of the LJ4 install does Needs=HPLJ4.GPD overwrite the
; just copied newer version of hplj4.gpd??? In this case perhaps, use
; Needs=HPLJ4L.GPD to avoid this issue?

;
; Phase II GPDs
;
; XP
;Old CopyFiles statement before use of Includes= & Needs= ...
;CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,RES_COMMON,HELP,UNIDRV,imgport.DLL,@TTFSUB.GPD
[HPLJ4.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4L.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HPLJ4L.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4L.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4L.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HPLJ4M.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4M.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4M.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HPLJ4ML.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4ML.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4ML.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HPLJ4MP.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4MP.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4MP.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HPLJ4P.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4P.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4P.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HPLJ4PS.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4PS.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4PS.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HP4MPLS.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HP4MPLS.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HP4MPLS.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HPLJ4SI.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4SI.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4SI.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HP4SIMX.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HP4SIMX.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HP4SIMX.GPD
PrintProcessor=%PRINT_PROCESSOR%

[HPLJ4V.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4V.GPD,@hpc02.ini,@hpcstr02.dll,HELP
Include=NTPRINT.INF
Needs=HPLJ4.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4V.GPD
PrintProcessor=%PRINT_PROCESSOR%

...全文
885 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdw736 2016-07-13
  • 打赏
  • 举报
回复
弱弱的问一下,最后是怎么安装上去的?
giant7 2014-06-12
  • 打赏
  • 举报
回复
引用 43 楼 codewarrior 的回复:
[quote=引用 42 楼 ggxxkkll 的回复:] [quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
您好,请教个问题: 我在 DLLmain函数 和 InitializePrintMonitor 函数(这个两个函数在同一文件.cpp里面)都加了 测试代码,但是 只有 InitializePrintMonitor 里面的测试代码输出了,而 DLL的入口函数DLLmain 竟然没有输出,这是怎么回事? 谢谢![/quote] DllMain的测试代码加在哪儿?[/quote] 就在Dllmain函数的第一行。 现在已经解决了,谢谢! 结贴给分!!!
会思考的草 2014-06-12
  • 打赏
  • 举报
回复
引用 42 楼 ggxxkkll 的回复:
[quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
您好,请教个问题: 我在 DLLmain函数 和 InitializePrintMonitor 函数(这个两个函数在同一文件.cpp里面)都加了 测试代码,但是 只有 InitializePrintMonitor 里面的测试代码输出了,而 DLL的入口函数DLLmain 竟然没有输出,这是怎么回事? 谢谢![/quote] DllMain的测试代码加在哪儿?
giant7 2014-06-11
  • 打赏
  • 举报
回复
引用 32 楼 codewarrior 的回复:
ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
您好,请教个问题: 我在 DLLmain函数 和 InitializePrintMonitor 函数(这个两个函数在同一文件.cpp里面)都加了 测试代码,但是 只有 InitializePrintMonitor 里面的测试代码输出了,而 DLL的入口函数DLLmain 竟然没有输出,这是怎么回事? 谢谢!
会思考的草 2014-06-10
  • 打赏
  • 举报
回复
引用 40 楼 ggxxkkll 的回复:
[quote=引用 34 楼 codewarrior 的回复:] [quote=引用 33 楼 ggxxkkll 的回复:] [quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote]
引用 33 楼 ggxxkkll 的回复:
[quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote] NSI是一个打包软件,创建安装包,它里面调用了windows自带的功能安装INF,既然是随着源代码一起发布的,就不要折腾别的INF了,用它的就行了。[/quote] 您好! 再次请教一个问题,我发现只用 上面的 INF文件,最后虚拟打印时会失败,原因是 端口不对! 我觉得原因在于没有 安装时没有采用正确的端口,正好 Setup.NSI 文件没有用。 请问, NSI文件如何使用,如何跟INF文件结合一起来安装虚拟打印机? 谢谢![/quote] 跟其他的安装脚本一样,用NSIS编译NSI文件产生安装包。
会思考的草 2014-06-09
  • 打赏
  • 举报
回复
ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
会思考的草 2014-06-09
  • 打赏
  • 举报
回复
引用 27 楼 ggxxkkll 的回复:
[quote=引用 26 楼 Huntercao 的回复:] 你安装使用过么?如果能够使用,那么可以确定dll是没有问题的,是你的INF写的有问题。 看看安装包把该文件放哪了,看看注册表里面有增加什么东西没有。 另外,看看系统的设备安装日志$(SystemRoot)\windows\inf\setupapi.dev.log. 我的系统是64位的,没法测试安装。 看到另外一个帖子有INF信息,看看对你是否有帮助。
谢谢版主的热心回复! 我可以很肯定的确定是我的 INF文件 写的有问题,但是查了很多资料, INF文件的格式写法有很多资料,但是关于 虚拟打印机这块的资料和例子比较少,所有 修改起来比较蛋疼!!! 另外,我知道是自己的 Port Montior没有被调用,才导致自己的 虚拟打印失败! 下面是自己用 chinf检测 INF文件的结果: E:\Driverprogram\new92\lj631sc\lj456p5.inf: PASSED NTLOG REPORT-------------- Total Lines: 700 | Total Errors: 0 | Total Warnings: 8 | -------------------------- Line 1: WARNING: (DW22.23.8517) NOTE: INFs that belong to the PRINTER class must be checked with the InfGate tool. Line 14: WARNING: (W22.1.2083) Section [PORTMONITORS] not referenced Line 17: WARNING: (W22.1.2083) Section [SAMPLEPORTMON] not referenced ----》 Port Monitor 没有正确安装好 Line 21: WARNING: (W22.1.2077) System defined classes should usually not specify a class installer. Line 108: WARNING: (W22.1.2083) Section [OEM URLS] not referenced Line 569: WARNING: (W22.1.2083) Section [STRING_DLL] not referenced Line 587: WARNING: (W22.1.2083) Section [HP_UNIDRV_DATA] not referenced Line 593: WARNING: (W22.1.2083) Section [HP_UNIDRV_BIDI_DATA] not referenced [/quote] 跟虚拟打印一点关系也没有,就是一个普通的INF用于安装打印机驱动且指定port monitor,只不过在port monitor里面干了一点私活而已,安装过程和其他的普通打印机驱动安装没什么两样。
会思考的草 2014-06-09
  • 打赏
  • 举报
回复
引用 29 楼 ggxxkkll 的回复:
[quote=引用 28 楼 Huntercao 的回复:] “INFs that belong to the PRINTER class must be checked with the InfGate tool. ”找找InfGate tool,也许该工具能告诉你更详细的信息。 你最新的INF是什么样的呢?
\ 谢谢版主, 我试试看! 请问,这个信息“INFs that belong to the PRINTER class must be checked with the InfGate tool.  ”您是在哪里找到的, MSDN吗?[/quote] 善用搜索: Tool Name: INFGate (Infgate.exe) WDK tool: Yes Tool location: %WindowsSdkDir%\tools\x64\infgate.exe %WindowsSdkDir%\tools\x86\infgate.exe.exe Description and Help file location: Validates the conformance of a printer INF file. For information about command options, type infgate /?
giant7 2014-06-09
  • 打赏
  • 举报
回复
引用 28 楼 Huntercao 的回复:
“INFs that belong to the PRINTER class must be checked with the InfGate tool. ”找找InfGate tool,也许该工具能告诉你更详细的信息。 你最新的INF是什么样的呢?
\ 谢谢版主, 我试试看! 请问,这个信息“INFs that belong to the PRINTER class must be checked with the InfGate tool.  ”您是在哪里找到的, MSDN吗?
giant7 2014-06-09
  • 打赏
  • 举报
回复
引用 34 楼 codewarrior 的回复:
[quote=引用 33 楼 ggxxkkll 的回复:] [quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote]
引用 33 楼 ggxxkkll 的回复:
[quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote] NSI是一个打包软件,创建安装包,它里面调用了windows自带的功能安装INF,既然是随着源代码一起发布的,就不要折腾别的INF了,用它的就行了。[/quote] 您好! 再次请教一个问题,我发现只用 上面的 INF文件,最后虚拟打印时会失败,原因是 端口不对! 我觉得原因在于没有 安装时没有采用正确的端口,正好 Setup.NSI 文件没有用。 请问, NSI文件如何使用,如何跟INF文件结合一起来安装虚拟打印机? 谢谢!
giant7 2014-06-09
  • 打赏
  • 举报
回复
引用 34 楼 codewarrior 的回复:
[quote=引用 33 楼 ggxxkkll 的回复:] [quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote]
引用 33 楼 ggxxkkll 的回复:
[quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote] NSI是一个打包软件,创建安装包,它里面调用了windows自带的功能安装INF,既然是随着源代码一起发布的,就不要折腾别的INF了,用它的就行了。[/quote] 谢谢你的热心回复和帮助!
giant7 2014-06-09
  • 打赏
  • 举报
回复
引用 35 楼 Huntercao 的回复:
顶楼上的。 作者发布的东西你应该尽量使用。不要新创建INF。 搞清楚ImagePrint本身是怎么运行安装的然后再来修改方案,看看怎么改才能用到你的产品中去。
也好。毕竟别人成果的东西不需要自己修改,先学习再改进。 多谢版主建议!
giant7 2014-06-09
  • 打赏
  • 举报
回复
引用 34 楼 codewarrior 的回复:
[quote=引用 33 楼 ggxxkkll 的回复:] [quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote]
引用 33 楼 ggxxkkll 的回复:
[quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote] NSI是一个打包软件,创建安装包,它里面调用了windows自带的功能安装INF,既然是随着源代码一起发布的,就不要折腾别的INF了,用它的就行了。[/quote] 好的,我试试看! 但愿,一开始我的方向没有错吧! 折腾半个月了,没任何成果!
曹大夯 2014-06-09
  • 打赏
  • 举报
回复
顶楼上的。 作者发布的东西你应该尽量使用。不要新创建INF。 搞清楚ImagePrint本身是怎么运行安装的然后再来修改方案,看看怎么改才能用到你的产品中去。
会思考的草 2014-06-09
  • 打赏
  • 举报
回复
引用 33 楼 ggxxkkll 的回复:
[quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote]
引用 33 楼 ggxxkkll 的回复:
[quote=引用 32 楼 codewarrior 的回复:] ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。
谢谢你的热心回复! 我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。 看来 infgate 检测更严格。说明 我的inf文件有问题。 另外,请教你几个问题: 问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。 各个文件如下图所示,首先是整个imageprinter源代码: install文件夹里面的文件: i386文件夹里面的文件: 请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了? 问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗? 问题3 我用 infgate 检测INF文件,有一个错误如下: [HPLJ4.GPD.XP] CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport Include=NTPRINT.INF Needs=HPLJ4L.GPD DataSection=HP_UNIDRV_BIDI_DATA DataFile=HPLJ4.GPD PrintProcessor=%PRINT_PROCESSOR% 错误如下: <Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error> 上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。” 您知道该如何修改吗? 谢谢![/quote] NSI是一个打包软件,创建安装包,它里面调用了windows自带的功能安装INF,既然是随着源代码一起发布的,就不要折腾别的INF了,用它的就行了。
giant7 2014-06-09
  • 打赏
  • 举报
回复
引用 32 楼 codewarrior 的回复:
ImagePrinter的源代码里面不是自带了一个inf安装文件和一个NSI脚本么?你为什么要去找别的打印机驱动的INF去改?不要很肯定认为是INF问题安装没成功,如果安装过程没有报错,基本上安装没问题,没有打印成功有很多种原因。建议你在ImgPort.dll的关键入口如InitializePrintMonitor(这个函数已经废弃了)加一些Trace语句,看看到底执行了没有,如果执行了说明你的安装没问题,ImgPort.dll的代码有问题。


谢谢你的热心回复!
我采用 版主在 28楼的方法:用 Infgate tools 检测INF文件 竟然出现了 100多个error(但是以前用chkinf来检测 Inf文件就没有报错)。

看来 infgate 检测更严格。说明 我的inf文件有问题。

另外,请教你几个问题:
问题1 我的确下载了 Imageprinter源代码,里面也有 inf文件和NSI脚本。
各个文件如下图所示,首先是整个imageprinter源代码:


install文件夹里面的文件:


i386文件夹里面的文件:


请教, NSI文件在这里有什么作用? 安装 虚拟打印机驱动有用吗?是不是用了 INF 文件安装就不用NSI文件了?

问题2 我不是在InitializePrintMonitor里面加的测试代码,而是前几天在源程序代码入口函数 DLLmain()里面加入了测试代码,最后打印测试时在日志文件里面没有测试代码,说明 我的dll根本就没有调用,从而说明 INF文件写的有问题才导致我的 dll没被调用。发现 INF文件太过于复杂,怎么写都有错误,您能提供一下 虚拟打印机的 INF文件 的例子吗?


问题3 我用 infgate 检测INF文件,有一个错误如下:
[HPLJ4.GPD.XP]
CopyFiles=HPPRPROC,UI,RENDER,@HPLJ4.GPD,@hpc02.ini,@hpcstr02.dll,HELP,imgport
Include=NTPRINT.INF
Needs=HPLJ4L.GPD
DataSection=HP_UNIDRV_BIDI_DATA
DataFile=HPLJ4.GPD
PrintProcessor=%PRINT_PROCESSOR%


错误如下:
<Error Lnum="138">(DE22.23.8542) File "HPLJ4.GPD" conflicts with file shipped in the OS (referenced in NTPrint.inf).</Error>

上面红色的代码是 第138行,但是我不知道该如何修改? 如果在 copyfiles里面删掉 HPLJ4.GPD,又会报新的错误“在copyfiles里面HPLJ4.GPD没有被引用到。”
您知道该如何修改吗?


谢谢!
曹大夯 2014-06-06
  • 打赏
  • 举报
回复
你安装使用过么?如果能够使用,那么可以确定dll是没有问题的,是你的INF写的有问题。 看看安装包把该文件放哪了,看看注册表里面有增加什么东西没有。 另外,看看系统的设备安装日志$(SystemRoot)\windows\inf\setupapi.dev.log. 我的系统是64位的,没法测试安装。 看到另外一个帖子有INF信息,看看对你是否有帮助。
giant7 2014-06-06
  • 打赏
  • 举报
回复
引用 23 楼 Huntercao 的回复:
[quote=引用 21 楼 ggxxkkll 的回复:] [quote=引用 19 楼 Huntercao 的回复:] 你直接安装使用imageprinter可以么? 解压setup.exe,可以发现imgprinter.inf文件。参考该INF进行修改或者不修改都应该可以用吧?
我下载的那个 是 项目的源代码,编译完后是 DLL文件。没有 INF的[/quote] 网站上有另一个链接,可以直接下载安装包。 该安装包可以直接解压获取对应的INF文件。 [/quote] 版主,这个 INF文件不是我想要的啊,你可以看看这个INF文件的内容: [Version] Signature="$Windows NT$" Provider=%MS% ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318} Class=Printer [Manufacturer] "Code-Industry"=Code-Industry, NTamd64, NTia64 [Code-Industry] "ImagePrinter" = imgprint.gpd [ITK.NTamd64] "ImagePrinter" = imgprint.gpd [ITK.NTia64] "ImagePrinter" = imgprint.gpd [imgprint.gpd] CopyFiles=@imgprint.gpd DataSection=UNIDRV_DATA Include=NTPRINT.INF Needs=UNIDRV.OEM [DestinationDirs] DefaultDestDir=66000 [SourceDisksNames.x86] 1 = ,,,\i386 [SourceDisksFiles] imgprint.gpd = 1 [Strings] PrinterClassName="Printers" MS="Code-Industry" 它里面根本就没有 包含 imgport.dll,所以不符合我采用 INF文件安装的方法(我采用 INF 文件安装虚拟打印机,是要包含dll文件的,而采用 setup.exe来安装虚拟打印机根本就不需要,而是在安装完后在:C:\Program Files\ImagePrinter\i386 下有 imgport.dll 文件) 版主,而且 这个 INF文件比较简单,根本就不符合要求。 版主,还有其他的方法 检测 INF文件是否有误? 谢谢!
giant7 2014-06-06
  • 打赏
  • 举报
回复
引用 23 楼 Huntercao 的回复:
[quote=引用 21 楼 ggxxkkll 的回复:] [quote=引用 19 楼 Huntercao 的回复:] 你直接安装使用imageprinter可以么? 解压setup.exe,可以发现imgprinter.inf文件。参考该INF进行修改或者不修改都应该可以用吧?
我下载的那个 是 项目的源代码,编译完后是 DLL文件。没有 INF的[/quote] 网站上有另一个链接,可以直接下载安装包。 该安装包可以直接解压获取对应的INF文件。 [/quote] 版主,你太有爱了! 谢谢!
曹大夯 2014-06-06
  • 打赏
  • 举报
回复
“INFs that belong to the PRINTER class must be checked with the InfGate tool. ”找找InfGate tool,也许该工具能告诉你更详细的信息。 你最新的INF是什么样的呢?
加载更多回复(24)
理解Microsoft专家认证程序 理解Microsoft认证的不同等级和类型 选择成为MCP(Microsft认证专家)的考试科目 选择成为MCSD的考试科目 选择成为MCT的考试科目 MCSE认证考试的科目 选择合适的MCSE课程组合 核心课程考试 选修课程考试 考试编号的识别 课程内容和考试内容的对照 理解微软的MCSE长远考虑 理解微软出题的方式 使用本书帮助备考 在Internet上寻找对考试有帮助的信息 寻微软认可的课程指导 寻找高质量的和三方帮助 寻找可利用的评估软件拷贝 报名参加考试 考试的费用问题 考前的自我调整 使用考试心提供的考试工具 参加模拟测试 熟悉使用计算机进行考试 充分利用考试时间 考题的形式 理解多重选择题型 理解对错题题型 理解多重选择多重答案题型 理解基于解决方案型的问题 理解“建议方法”类型的考题 分析考试结果 准备重新考试 合理安排考试课程的顺序 熟悉Windows系列产品 比较Windows NT Server和NT Workstation 比较Windows NT Workstaton和Windows 95 在Windowx 95和Windows NT Workstation之间作出选择 关于Microsoft Windows NT的70-069号考试:实现和支持Microsoft Windows NT Server 4.0 70-069号考试(实现和支持Microsoft Windows NT Server 4.0)覆盖的内容 Windows NT 4.0界面简介 Windows NT 4.0任务栏(taskbar)的使用 Windows NT回收站简介 Windows NT帐号简介 理解单域模型支持和帐号数量 安全认证号简介 使用管理向导(Administrative Wizards)创建帐号 使用Server Manager(服务器管理器)程序创建计算机帐号 Userver Manager for Domains(域的用户管理器)简介 使用User Mnager for Domains创建用户帐号 刷新用户帐号列表 用户帐号列表的排序 事件查看器(Event View)程序简介 筛选Event Viewer的事件 授予用户在本地登录的权利 使用Windows NT诊断程序查看系统配置 激活“Windows NT Security(Windows NT安全)”对话框 理解登录验证过程 理解访问令牌(Access Token) Windows NT目录服务简介 理解Windows NT如何构造用户帐号数据库 使用Windows NT的Ctrl+Alt+Del组合键 把Windows NT计算机设置成自动登录 改变Windows NT口令 用拨号网络登录 复制用户帐号 为简化多个帐号的创建工作而建立用户帐号模板 删除和重新命名用户帐号 理解保护缺省的Administrator帐号的重要性 重新命名管理员帐号 理解缺省的Guest帐户 Windows NT在哪里创建帐号 设置口令限制条件 设置用户登录地点 创建宿主文件夹 设置用户登录时间 创建临时用户帐号 重新设置用户帐号口令 修改多个用户帐号 自动注销有时间限制的用户 要用户在下次登录时改变口令 设置帐号规则 设置用户口令永不过期 停用用户帐号 解开登录失败后的用户帐号 Windows NT组简介 理解用户权限和组的访问权限 理解用户和组的权利 分清权限(permission)和权利(right) 设置组成成员关系 理解全局帐号 理解本地帐号 定义Everyone组 Network组的详细说明 Inteactive组的详细说明 Administrators组的详细说明 Guest组的详细说明 Users组的详细说明 Print Operators组的详细说明 Backup Operators(帐户操作员)组的详细说明 Replicator(复制员)组的详细说明 Domain Guests(域客户)组的详细说明 Domain Users(域用户)组的详细说明 Domain Admins(域管理员)组的详细说明 赋予拨号进入权限 理解用户配置文件(User Profile) 为Windows用户创建并使用登录脚本文件(Logon Script) 创建漫游式用户配置文件(Roaming User Profile) 创建强制性用户配置文件(Mandatory User Profile) 为用户帐号分配一个配置文件 创建帐户时变量的使用 创建随机初始化口令 理解内建组(Built-in Group) 理解组和策略 设置主组(Primary Group) 理解删除一个组的影响 域控制器(Domain Controller)简介 成员服

21,601

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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