Printer Implementation - Best Way ?



Wolfgang
07-09-2005, 09:24 PM
Dear all,

I must implement printer support. Can't add thousands of printers to my CF
and I suspect
I have to add the driver for each printer I want to support.
Now several Questions related to that:

1.) How can I install a printer driver, but suppress pop-up windows by the
driver (cartridge empty) ?
(We've a custom screen and don't want "normal" windows)
Is this even possible ?

2.) HP told us that most of there printers would work with Deskjet 550c &
990c drivers.
How can I tell XPE to use this driver for each HP-printer it detects ?
(We'll connect all printers over USB)

3.) As it is very unlikely that I'm the first one with this problem with
supporting printers not knowing which one
the customer has:
Is there an elegant way to implement a kind of "standard" or generic
printer driver which will work
with several printers ? (E.g. a PS-driver where we could say: If it's a
PS-printer it will work.)
To give you an idea: The customer will buy the printer for our device.
But we can't insist buying a XYZ0815AZ-F7CD
printer model which is obsolete in 6month or not available on the north
pole.

Any suggestions are welcome,
Wolfgang

KM
07-09-2005, 09:24 PM
Wolfgang,

> Dear all,
>
> I must implement printer support. Can't add thousands of printers to my CF and I suspect

Why not?
On SP2 you can use "Generic Device Driver Support" macro and set "Printers" option there.
On SP1 you can use All_Printers project from www.xpefiles.com.

> I have to add the driver for each printer I want to support.
> Now several Questions related to that:
>
> 1.) How can I install a printer driver, but suppress pop-up windows by the
> driver (cartridge empty) ?
> (We've a custom screen and don't want "normal" windows)
> Is this even possible ?

http://msdn.microsoft.com/embedded/community/community/tips/xp/popups/default.aspx

Also, you can remobve newdev.dll ("Add Hardware Control Panel") from your image and copy printer files to appropriate windows
directories manually (don't forget printer help files!) and PnP will do the rest.

> 2.) HP told us that most of there printers would work with Deskjet 550c & 990c drivers.

Most of *thier* deskjet printers. Nothing else.

> How can I tell XPE to use this driver for each HP-printer it detects ?
> (We'll connect all printers over USB)

This is up to HP and they prepared INF files to have that driver working for some printers.
I don't think you want to mess up with their tested INF files.
So all you get on XP Pro will work on XPe. In other words, if you can get this driver working on XP PRo for all the printers you
target, you can make it working the same way on XPe.

> 3.) As it is very unlikely that I'm the first one with this problem with
> supporting printers not knowing which one
> the customer has:
> Is there an elegant way to implement a kind of "standard" or generic
> printer driver which will work
> with several printers ? (E.g. a PS-driver where we could say: If it's a
> PS-printer it will work.)

This question is more from XP Pro area. Basically, some PS drivers from some manufacturers will cover some of thier printers.
There is no universal driver (way) to cover all even the PS printers of different brands.

> To give you an idea: The customer will buy the printer for our device.
> But we can't insist buying a XYZ0815AZ-F7CD
> printer model which is obsolete in 6month or not available on the north pole.

Again, think in "XP Pro" way. If you can make it working on XP Pro (whatever scenerios you wan tto support), you can implement that
on XPe.


--
Regards,
KM, BSquare Corp.

Wolfgang
07-09-2005, 09:24 PM
Dear Konstantin,

Thanks for your suggestions. And excuse for *there* lazy translator
(unfortunately I can't get an update ;-)

>> I must implement printer support. Can't add thousands of printers to my
>> CF and I suspect
> Why not?

I think each printer requires a certain amount of CF-space. I have approx.
40-50MB to spend.
I don't think it's enough for >2000 printers.

> On SP2 you can use "Generic Device Driver Support" macro and set
> "Printers" option there.

I didn't use this macro but added some other and so I'm able to install a
printer.
I did this with one special model and it works well.

> On SP1 you can use All_Printers project from www.xpefiles.com.

Why not a macro component with dependencies where the user can "check" or
"uncheck" a Printer or at least
a bundle of printers ? - O.k. I'm just beginning with all that issues. And
don't know how to merge that slx file
with mine - but nevertheless I don't want so many printers.
(By the way: I bought a deskjet 3845 - have not found it in Printers.slx. )

> http://msdn.microsoft.com/embedded/community/community/tips/xp/popups/default.aspx

I've seen this before but I would not feel good with it as I also will not
see possibly important messages.
(O.k. we want to suppress normal windows, but it would be better to hear a
customer saying: You have not enough
memory instead of a completly silent crash.)

>> 2.) HP told us that most of there printers would work with Deskjet 550c &
>> 990c drivers.
> Most of *thier* deskjet printers. Nothing else.

A Starting point ?

> So all you get on XP Pro will work on XPe. In other words, if you can get
> this driver working on XP PRo for all the printers you
> target, you can make it working the same way on XPe.

O.k. then there seems to be no easy way.

>> To give you an idea: The customer will buy the printer for our
>> device.
>> But we can't insist buying a XYZ0815AZ-F7CD
>> printer model which is obsolete in 6month or not available on the
>> north pole.
>
> Again, think in "XP Pro" way. If you can make it working on XP Pro
> (whatever scenerios you wan tto support), you can implement that
> on XPe.

That's right. But on XP Pro I would tell the customer: Insert the CD and
install the printer.
On XPE we don't have a CD-Rom and the image is EWF-protected.
I've 40-50MB to spend for drivers. Hence I want to implement around 5 now
common printers, where we guarantee functionality.
Enhance the inf-file for one or more that possibly a hole series is working
(or do we believe that they reinvent the wheel with
every printer model ?)


All suggestions are very welcome,


Wolfgang


P.S.: Seems that some printers use Text-based Unidrv minidrivers
that describe printers by using GPD-file entries.
Thought it would be possible to find a kind of general driver implementation
that I can access the functionality I want (e.g. change papersize from DIN
A4 to letter)
and print through my Application but without the "additional feature"-dll's
informing me that
the ink is nearly empty, an update is available requiring a lot of disk
space.
Implementing former PCL-language or supporting a series of ink printers.

KM
07-09-2005, 09:24 PM
Hi Wolfgang,

> Thanks for your suggestions. And excuse for *there* lazy translator (unfortunately I can't get an update ;-)

No problems with the translation :-)
I was just stressing out that HP drivers will only support some HP printers. They won't support other brands.

>>> I must implement printer support. Can't add thousands of printers to my CF and I suspect
>> Why not?
>
> I think each printer requires a certain amount of CF-space. I have approx. 40-50MB to spend.
> I don't think it's enough for >2000 printers.

Understood. Yes, the disk (CF) space limitation should definitely be a concern.

>> On SP2 you can use "Generic Device Driver Support" macro and set "Printers" option there.
>
> I didn't use this macro but added some other and so I'm able to install a printer.
> I did this with one special model and it works well.

You don't need to use macro since it will blow up your image footprint.

>> On SP1 you can use All_Printers project from www.xpefiles.com.

The same here, don't use this project since you use CF card.

> Why not a macro component with dependencies where the user can "check" or "uncheck" a Printer or at least a bundle of printers ?

That would be 2800 printers listed on the same page :-)

> - O.k. I'm just beginning with all that issues. And don't know how to merge that slx file
> with mine - but nevertheless I don't want so many printers.

True, so forget about merging SLX (btw, not a simple task itself anyway).

> (By the way: I bought a deskjet 3845 - have not found it in Printers.slx. )

The Printers.slx included all printer components from XPe SP1 database. If you have a "new" printer driver, you would need to add it
manually.

>> http://msdn.microsoft.com/embedded/community/community/tips/xp/popups/default.aspx
>
> I've seen this before but I would not feel good with it as I also will not see possibly important messages.
> (O.k. we want to suppress normal windows, but it would be better to hear a customer saying: You have not enough
> memory instead of a completly silent crash.)

Ok. So you need to "filter" various messages.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xpehelp/html/xesamMessageInterception.asp
And some app suggestions in this thread:
http://groups-beta.google.com/group/microsoft.public.windowsxp.embedded/browse_frm/thread/7e258eef016af76e/7fcefb44117621ba#7fcefb44117621ba


>>> 2.) HP told us that most of there printers would work with Deskjet 550c & 990c drivers.
>> Most of *thier* deskjet printers. Nothing else.
>
> A Starting point ?

Only if you are planning on supporting only HP printers (deskjets).

>> Again, think in "XP Pro" way. If you can make it working on XP Pro (whatever scenerios you wan tto support), you can implement
>> that
>> on XPe.
>
> That's right. But on XP Pro I would tell the customer: Insert the CD and install the printer.
> On XPE we don't have a CD-Rom and the image is EWF-protected.

Do you have any other way to do updates on the device? USB, Network, etc?
Then you could use DUA or your own agent or (even another XPe "recovery/update" image bootable from USB, or DOS from Floppy) to
provide your customers with required printer drivers. The silent installation of most of printer drivers is easy - just copy all the
required files to appropriate Windows directories, commit the changes with EWF, reboot and you are done.

> I've 40-50MB to spend for drivers. Hence I want to implement around 5 now common printers, where we guarantee functionality.


I've never heard of solution for that problem on XP Pro. If you find one, let us know.

> Enhance the inf-file for one or more that possibly a hole series is working (or do we believe that they reinvent the wheel with
> every printer model ?)

No, they don't reinvent the wheel but there is, unfortunately, no backward compability between printer models on XP.
It totaly depends on the brand so you would get a better answer from printer manufacturers.

> P.S.: Seems that some printers use Text-based Unidrv minidrivers
> that describe printers by using GPD-file entries.
> Thought it would be possible to find a kind of general driver implementation
> that I can access the functionality I want (e.g. change papersize from DIN A4 to letter)
> and print through my Application but without the "additional feature"-dll's informing me that
> the ink is nearly empty, an update is available requiring a lot of disk space.
> Implementing former PCL-language or supporting a series of ink printers.

Well.. generic PCL driver would work for *some* printers. That is how it works on Windows CE, for instance.
But the number of printers supported by that class driver is very limited. So, on CE, basically all manufacturers often come up with
their own drivers for their models.

KM

Wolfgang
07-09-2005, 09:24 PM
Hi Konstantin,

Thanks for your help !
Now I see a little bit clearer.

> Do you have any other way to do updates on the device? USB, Network, etc?
> Then you could use DUA or your own agent or (even another XPe
> "recovery/update" image bootable from USB, or DOS from Floppy) to provide
> your customers with required printer drivers. The silent installation of
> most of printer drivers is easy - just copy all the required files to
> appropriate Windows directories, commit the changes with EWF, reboot and
> you are done.

Yes, yes, I know, but unfortunately we don't want our customers to do such
complicated things.
We decided to send them a new CF-card in case of a required update.
Hence he'll get no update possibility. Hence: Is the right printer not in
his image he's lost.
Now we don't want to give out different CF's for customers with different
printers ... (that would be a mess)
Hence we thought we could implement a couple of "standard" printers which he
can buy if he wants.

> I've never heard of solution for that problem on XP Pro. If you find one,
> let us know.

Ok. I'll do but don't rely I find something ;-)


Regards, Wolfgang


P.S.: Turning of messagebox-function through registry setting did not help
with printer "pop-up's".
Instead I made printer setting to have unidirectional port support.

KM
07-09-2005, 09:24 PM
Hi Wolfgang,

>> Do you have any other way to do updates on the device? USB, Network, etc?
>> Then you could use DUA or your own agent or (even another XPe
>> "recovery/update" image bootable from USB, or DOS from Floppy) to provide
>> your customers with required printer drivers. The silent installation of
>> most of printer drivers is easy - just copy all the required files to
>> appropriate Windows directories, commit the changes with EWF, reboot and
>> you are done.
>
> Yes, yes, I know, but unfortunately we don't want our customers to do such
> complicated things.

I totaly understand your point here. It may not be wise to rely on
customer's knowledge of XP and how things work there.
However, I wasn't suggesting doing the "copy" operations manually.

You can create a bootable XPe image, put it on CD (if you can have such
option), USB or etc. and the image will provide the required updates to the
local image on the device to "install" (copy require files, reg.entries,
etc.) new printer drivers offline.
Basically, the instructions for users would be "plug in USB Key ... reboot
.... wait until the update is done ... reboot again".
This is one of real scenerios I've seen implemented.

Regards,
Konstantin


Printer Implementation - Best Way ?