_Y_ Posted April 28, 2013 Report Share Posted April 28, 2013 I am trying to assemble an installer that includes NI Vision RTE. So far the aim is to understand what must be included in the installer specification. I.e. to assemble minimalistic specification for the installer. So, I include few VI-s with my test program (LabView 2012), LabVIEW Run-Time Engine 2012 f3 and Vision Run.Time Engine 2012. An attempt to install in a blank Windows-XP computer resulted in such an error: .Distribution.cpp(2065): InstallerError 11004 Developer Error. Distribution contains invalid dependencies: 1. Product NI Vision Run-Time Engine 2012 SP1 ({5D9D2C64-6D70-44CB-860C-4C624A03D870}) depends on product with upgrade code {409BEFA9-EB3E-472F-AD77-271A4A1D5927}, version [12.10.35.0,), language in {} which is not in the distribution. 2. Product NI Vision Run-Time Engine 2012 SP1 ({5D9D2C64-6D70-44CB-860C-4C624A03D870}) depends on product with upgrade code {CBA7EDB3-A142-43B6-B68B-A723624F1375}, version [3.7.50,), language in {} which is not in the distribution. 3. Product NI Vision Run-Time Engine 2012 SP1 ({5D9D2C64-6D70-44CB-860C-4C624A03D870}) depends on product with upgrade code {5D6378B2-B24D-4AD6-5DA2-FAEFDB81A250}, version [12.0.7.0,), language in {} which is not in the distribution. Correct the distribution and try again. <No Debug Message> As I understand, more items must be included in the installer. But how can I understand which parts? Upgrade codes and versions without names of products are little confusing. I would be very glad if someone teaches me how to decrypt such error messages. Thank you. Quote Link to comment
Yair Posted April 28, 2013 Report Share Posted April 28, 2013 Jack Dunaway has a good article on the subject here - https://connect.wirebirdlabs.com/knowledgebase/articles/172999-segmenting-the-run-time-engine He doesn't talk about identifying GUIDs, but I hope what he has there should cover it. At the very least, you could try looking up the version numbers. The other option, of course, is to build the full installer using LV, which is certainly safer. Quote Link to comment
JackDunaway Posted April 28, 2013 Report Share Posted April 28, 2013 Upgrade Code, Product Code, and Package Code are three terminologies used by Microsoft Windows Installer (MSI) to identify the three dependencies your application installer is missing -- read more about what they mean here: http://blogs.msdn.com/b/pusu/archive/2009/06/10/understanding-msi.aspx (There are many explanations, this is just one good one) It sounds like you're on the right track using virtual virgin machines to test your distributable. Quick question -- if you install the distributable on your dev machine, will it run without the three errors about missing dependencies? I'm guessing the answer is yes. In this case, you can query your dev machine for those three Upgrade Codes to see if they exist as installed products in the registry. This reverse-lookup should point you to the actual name of the product needed, not just a GUID. Another option is inspection of the MSI (google "free MSI editor"). Using a tool like this, sleuthing for the three Upgrade Codes likely reveals the name of the dependent MSIs. Finally, I would recommend inverting your distribution building process. First, just build an installer with nothing but your application and the LV RTE, and install this on a staging machine. Of course it will fail, but then manually run app-specific driver installers on the staging machine, until you have finally satisfied dependencies of the application. This technique is way more agile than including dependencies into your installer to test, since you don't have to rebuild each iteration. (Full disclosure -- my company provides products and services with a laser-focus on LabVIEW application deployment) 1 Quote Link to comment
_Y_ Posted April 29, 2013 Author Report Share Posted April 29, 2013 Thank you for answers. The last suggestion "Finally, I would recommend inverting your distribution building process..." is exactly what do I try to do. First step (test program + LV RTE) was successfully installed. But the program does not run complaining about missed libraries (no surprise of course). So, I added Vision RTE. The error listed above appears when attempting to install (not when running the installed program). So, the registry was searched on your advice. Seems there is a version conflict in the development computer. The registry contains "NI Vision Run-Time Engine 2012" while the installer writes about "NI Vision Run-Time Engine 2012 SP1". The GUIDs differ. So far this is the only progress. I shall continue. Quote Link to comment
hooovahh Posted April 29, 2013 Report Share Posted April 29, 2013 (edited) It sounds like you're on the right track using virtual virgin machines to test your distributable. Quick question -- if you install the distributable on your dev machine, will it run without the three errors about missing dependencies? I'm guessing the answer is yes. I recommend VMWare. It's quick and easy to delete a disk image and paste a backup with just Windows installed. The free version now allows making VMs even if it is called VMWare Player. Edited April 29, 2013 by hooovahh Quote Link to comment
_Y_ Posted May 2, 2013 Author Report Share Posted May 2, 2013 I reinstalled the whole LabVIEW in the development computer (using latest DVDs). This probably updated all packages to the last and same version. Seems, the problem is solved. Thank you! Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.