Jump to content

How to identify dependencies in installer?


_Y_

Recommended Posts

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.

Link to comment

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.

Link to comment

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)

  • Like 1
Link to comment

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.

Link to comment
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 by hooovahh
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.