Thx, will give it a try,...

Christopher Arthur


-----Ursprüngliche Nachricht-----
Von: Phill Hogland [mailto:phogl...@rimage.com]
Gesendet: Dienstag, 11. März 2014 13:37
An: wix-users@lists.sourceforge.net
Betreff: Re: [WiX-users] Installing HP LaserJet 4 Printer Driver on FILE 
instead of LPT1

Here are the PrintUI commands that I use.  I would test your parameters on a 
target machine in a admin CMD box prior to integrating into a msi.
        LPWSTR pwzAddPrinterCommand = L"\"%lsRunDll32.exe\"
PrintUI.dll,PrintUIEntry /if /b \"%ls\" /f \"%ls\" /r %ls /m \"%ls\" /u /q /z 
/Gw";
        LPWSTR pwzDelPrinterCommand = L"\"%lsRunDll32.exe\"
PrintUI.dll,PrintUIEntry /dl /n \"%ls\" /q /Gw";
        LPWSTR pwzDelDriverCommand = L"\"%lsRunDll32.exe\" 
PrintUI.dll,PrintUIEntry /dd /m \"%ls\" /q /Gw";


Snippet of deferred CA code that uses the above commands.  While this is 
working the driver is not in the driver store and I have yet to work on a 
DifxApi solution.  There is other refactoring that I am in the process of doing 
to extension project.
        switch (iOperation)
        {
                case WCA_TODO_INSTALL:
        case WCA_TODO_REINSTALL:
                        fDoQuietExec = true;
                        hr = RegOpen(HKEY_LOCAL_MACHINE, pwzPrinterKey, 
KEY_QUERY_VALUE, &hkPrinter);
                        if (ERROR_SUCCESS == hr) {
                                /*If the printer exsts, skip calling the 
'install' command on PrintUI api to avoid creating another printer*/
                                WcaLog(LOGMSG_VERBOSE, "Printer exists, so skip 
calling install action.\nPrinter Key: %ls\n", pwzPrinterKey);
                                fDoQuietExec = false;
                                break;
                        }

                        if (true == fDoQuietExec) {
                                hr = StrAllocFormatted(&pwzCommand, 
pwzAddPrinterCommand, pwzSystemPath, pwzModel, pwzInfPath, pwzPort, pwzName);
                                ExitOnFailure(hr, "failed to format the command 
to install a printer");

                                hr = QuietExec(pwzCommand, dwTimeout);
                                ExitOnFailure1(hr, "QuietExec failed to execute 
install command, %ls, and may have timed out.", pwzCommand);
                        }
            break;
        case WCA_TODO_UNINSTALL:
                        //uninstalling so look for printers with names which 
include our printer name.  Typically 'printer name (Copy 1)'
                        hr = RegOpen(HKEY_LOCAL_MACHINE, pwzPrintersKey, 
KEY_READ, &hkPrinters);
                        ExitOnFailure1(hr, "Failed to open the Windows Printers 
key: %ls, ", pwzPrintersKey);

                        for (DWORD dwIndex = 0; /* exit via break below */; 
++dwIndex)
                        {
                                ReleaseNullStr(pwzPrinterObject);
                                hr = RegKeyEnum(hkPrinters, dwIndex, 
&pwzPrinterObject);
                                if (E_NOMOREITEMS == hr)
                                {
                                        hr = S_OK;
                                        break;
                                }
                                ExitOnFailure(hr, "Failed to enumerate printer 
objects.");

                                if (NULL == wcsistr(pwzPrinterObject, pwzName)) 
{
                                        //WcaLog(LOGMSG_VERBOSE, "RegKeyEnum 
returned %ls, which is not of any interest to us.  Look for another printer.", 
pwzPrinterObject);
                                        continue;
                                }

                                //create a list of printers with similar name, 
to remove later
                                hr = WcaWriteStringToCaData(pwzPrinterObject, 
&pwzRelatedPrinters);
                                ExitOnFailure2(hr, "failed to add printer ( %ls 
) to the list: %ls", pwzPrinterObject, pwzId);

                                cPrinters++;
                        }

                        ReleaseNullStr(pwz);
                        pwz = pwzRelatedPrinters;
                        while (pwz && *pwz)
                        {
                                ReleaseNullStr(pwzPrinterObject);
                                hr = WcaReadStringFromCaData(&pwz, 
&pwzPrinterObject);
                                ExitOnFailure(hr, "failed to read related 
printer name from related printer list.");

                                //remove this printer
                                ReleaseNullStr(pwzCommand);
                                hr = StrAllocFormatted(&pwzCommand, 
pwzDelPrinterCommand, pwzSystemPath, pwzPrinterObject);
                                ExitOnFailure(hr, "failed to format the command 
to remove a printer");

                                hr = QuietExec(pwzCommand, dwTimeout);
                                ExitOnFailure1(hr, "QuietExec failed to execute 
uninstall printer command, %ls, and may have timed out.", pwzCommand);

                                // Tick the progress bar along
                                hr = WcaProgressMessage(COST_RDPPRINTERS, 
FALSE);
                                ExitOnFailure1(hr, "failed to tick progress bar 
for printer instance:
%ls", pwzId);
                        }

                        //Remove the printer driver
                        ReleaseNullStr(pwzCommand);
                        hr = StrAllocFormatted(&pwzCommand, 
pwzDelDriverCommand, pwzSystemPath, pwzModel);
                        ExitOnFailure(hr, "failed to format the command to 
remove a printer driver");

                        hr = QuietExec(pwzCommand, dwTimeout);
                        ExitOnFailure1(hr, "QuietExec failed to execute 
uninstall driver command, %ls, and may have timed out.", pwzCommand);

                        break;
        } //switch (iOperation)



--
View this message in context: 
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Installing-HP-LaserJet-4-Printer-Driver-on-FILE-instead-of-LPT1-tp7593244p7593284.html
Sent from the wix-users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the 
definitive new guide to graph databases and their applications. Written by 
three acclaimed leaders in the field, this first edition is now available. 
Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Wichtiger Hinweis: Diese E-Mail und etwa angehängte Dateien können vertrauliche 
Informationen enthalten und sind ausschließlich für den/die Adressaten 
bestimmt. Sollten Sie irrtümlich diese E-Mail erhalten haben, bitten wir Sie, 
uns darüber zu informieren und die E-Mail aus Ihrem System zu löschen. Das 
unerlaubte Kopieren und die unbefugte Weitergabe dieser Mail und ihrer Inhalte 
sind nicht gestattet.

Important notice: This email and some of the attached files can contain 
confidential information and are intended solely for the addressee. Should you 
have received this email in error, we ask that you inform us about this and 
delete the email from your system. The illegal copying and unauthorised 
re-distribution of this email and its contents are not permitted.

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to