09-13-2012 09:02 AM
Hi Folks,
we do have a Device Driver (*.inf) for our application which is added to our distribution we create in CVI. In the past we did copy the *.inf to the <windows>/inf folder directly (using the distribution-installer "Files"-Tab).
Recently we followed the guidelines described by "Using LabWindows/CVI to Install Your Device .inf Files".
So we now have chosen a meaningful subdirectory of our application as target-folder for the *.inf-file instead of copying it directly to the system's folder.
Everything works fine (besides the fact our driver has no signature and needs user interaction) while using Windows XP.
The DIFxApp (executing MsiProcessDrivers) recognizes the *.inf-file and installs the device driver.
After finishing the setup.exe successfully, the specified *.inf was duplicated as oem*.inf/pnf under <windows>/inf.
But under Windows 7 the *.inf gets not installed. I have executed "setup.exe /l*v" to get the logfile information of the installation process.
And I found this entry:
MSI (s) (8C:9C) [13:56:41:043]: Skipping action: MsiProcessDrivers (condition is false)
Obviously the Drivers-Installation step is skipped.
Choosing the <windows>/inf as target-folder for the *.inf (what's not working under Windows XP) everything just works fine.
Anybody knows why MsiProcessDrives is skipped under Windows 7? Is it always skipped or am I doing something wrong?
Help is appreciated!
Thanks!
Philipp
P.S.. : The device driver *.inf was written for multiple target OSs (XP, Vista, Win7) using Microsoft's Guidelines for that. So it's a universal *.inf file and can be used in every OS from XP to Win7.
Solved! Go to Solution.
09-14-2012 08:41 AM
Hi Philipp,
I have some questions to your request.
- Which Windows XP you have used? 32 or 64 Bit?
- Which Windows 7 you are using? 32 or 64 Bit?
- Are you using the same CVI-Version on Windows XP and Windows 7?
- Do you have admin rights on your Windows 7?
This information would help to find a solution.
09-14-2012 09:01 AM
Okay,
I solved the problem myself.
The Problem is related to the DIFxApp.dll which is available as 32bit and 64bit version.
In my case I created the distribution as 32 bit version. Therefore the 32-Bit DIFxApp.dll is merged to the *.msi-file which is unfortunately not compatible with Windows 7 (64 bit).
Therefore NI added the CustomAction-Condition (NOT VersionNT64) for MsiProcessDrivers, what is perfectly right for this case but resulting in not having the *.inf file
installed under Win7. I guess building the distribution as Release64 it will use the 64bit Version of DIFxApp.dll. I'm not able to verify that (working still on XP).
But then it will probably crash on XP.
But anyway. We do need to have a distribution for both OS.
Quick &Dirty workaround I figured out:
- Edit Distribution -> Files : Add the *.inf file to C:\window\inf
- Manually add a condition VersionNt64 in the resulting *.msi file under Component -> <your inf file with targeting the windows/inf-folder> (you can use the ORCA-Editor for that)
So now in case of XP the *.inf file gets installed by DIFxApp.dll.
Using Windows 7 the *.inf is copied directly to the windows/inf-folder and gets automatically installed the first time the device is plugged in.
I guess you can merge DIFxApp.dll (32bit) as well as DIFxApp.dll (64bit) to the *.msi and manage the whole stuff creating conditions. But that's not that fast implemented. At least for myself not...
Regards Philipp
09-14-2012 09:02 AM - edited 09-14-2012 09:03 AM
You were shooting in the right direction!
Thanks Splash for your help!
09-14-2012 09:48 AM
nice to hear
have a nice weekend