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%

...全文
884 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)

21,600

社区成员

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

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