Hi Aaron- I'd really have to have a long talk with you to fully understand what you are doing but my hunch is that your custom actions and registry searches are over complicating the problem. You might want to look into things such as MsiEnumRelatedProducts to let you make the jump from UpgradeCode to ProductCode without having to know the ProductCode. Also when I did Multiple Instance MSI's in InstallShield my setup.exe bootstrapper handled most of the servicing ( see my blog article that I linked ) and applied the instance transforms when invoking my installs. My installs generally needed to know very little that it was another instance of an existing install. I had very few custom actions. Regards, Chris
--- Christopher Painter, Author of Deployment Engineering Blog Have a hot tip, know a secret or read a really good thread that deserves attention? E-Mail Me --- On Mon, 5/9/11, Aaron Klor <aaron.k...@gmail.com> wrote: From: Aaron Klor <aaron.k...@gmail.com> Subject: Re: [WiX-users] [Wix-users] Less than completely random ProductCodes To: chr...@deploymentengineering.com, "General discussion for Windows Installer XML toolset." <wix-users@lists.sourceforge.net> Date: Monday, May 9, 2011, 11:32 AM I appreciate that input tremendously! I had figured that the replies here would be something to that effect (thanks to David also). Really, all that we need is a deterministic way to generated GUIDs (to GREATLY simplify our WiX authoring and maintaining), and we had thought that something like this would simplify the writing and testing of that function. To address the responses: David: All of the information that we are talking about putting into the guid is already in the values of the key that is generated using this guid (in the software\microsoft\windows\currentversion\uninstall (ARP) key), and the information storage isn't really the point of this guid anyway. Thank you though. Chris: I appreciate your candor. We are not entirely in love with the scheme that I presented before either. It just seems that our process for this could be greatly simplified by doing this. By using a deterministically generated guid (we don't NEED all that information embedded in the guid, could look random), we are able to determine what, if any instances are installed (at runtime), use a custom preprocessor to generate the InstanceTransforms element, and create and schedule custom actions (two per instance) to perform major upgrades on specific instances (rather than all at the same time). Also, we have several different products, some of which depend on others to be installed, and must be installed to a specific directory based on a specifc instance (selected by user at runtime) of their prerequisites' install location. This would allow the registry searches for those products to be greatly simplified as well, again using either a preprocessor or some custom actions at runtime. Really, all of this stems from the fact that to upgrade a specific instance of an installed product, that instance has to have a different upgrade code AND product code, from any other installations. Once that is realized, we must then schedule custom actions to change those codes at runtime based on the transform selected. Then we have to keep track of all of the instances' codes within the MSI, our solution being a custom table. Then we must also keep track of those codes for the other products who rely on that to be installed to find the install location. The net effect being that if we want to support 100 instances, we'd have to wrangle 1000's of guids for every release, plus maintain a couple thousand lines of WiX that consists of mostly copy/paste work. We would love to not violate the randomness of GUIDs, so if there is a way to do what we intend without deterministically generating GUIDs, we would be very happy, but so far we have been unable to find a way. Thank you very much again, Aaron On Mon, May 9, 2011 at 9:25 AM, Christopher Painter <chr...@deploymentengineering.com> wrote: IMO, I don't ever do this. I really don't care who does and what reasons they come up for doing it, I don't and will not ever do it. I also generate ProductCodes at build time to support major upgrades. I've also generated multiple instance installers where I generate new guids for each of the instance transforms. I have no intention of trying to put that level of meaning to a really big ass random number. I track my UpgradeCodes and release / labels and versions but not my ProductCodes and PackageCodes. I just let them be randomized. Chris --- Christopher Painter, Author of Deployment Engineering Blog Have a hot tip, know a secret or read a really good thread that deserves attention? E-Mail Me --- On Mon, 5/9/11, Aaron Klor <aaron.k...@gmail.com> wrote: From: Aaron Klor <aaron.k...@gmail.com> Subject: [WiX-users] [Wix-users] Less than completely random ProductCodes To: "General discussion for Windows Installer XML toolset." <wix-users@lists.sourceforge.net> Date: Monday, May 9, 2011, 9:12 AM We are considering defining our product codes for our different instances with a bit more structure than the random GUID generation that is usually recommended. We are considering this because we have to define a large number of product code GUIDs for each product AND change them every time we do a build. There is precedent for this sort of behavior (set by the Micrsoft Office team, see HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\90140000-XXXX-XXXX-0000000FF1CE), so we've decided to ask the list in order to hopefully gain some insight as to whether this is considered “bad form” or if this might be acceptable. For reference, we were considering something of this form: {XXXXXXXX-XXXX-XXXX-CoPr-MaMiRvBildIn} Where the X’s are randomly generated GUID bits, but will be the same throughout our products The description of the rest of the fields are: Co: 8-bit company code (human-readable, using A-F) Pr: 8-bit product code (human-readable, using A-F) Ma: Major rev Mi: Minor rev Rv: Revision Bild: Build number In: Instance number We understand that this significantly reduces the randomness of the GUID (potentially removing the GU part of GUID), but given the manageability gains, we feel that it might be worth it. It gives us the ability to easily generate (and programmatically search for) up to 255 instances, allows for revisions up to 255.255.255.65535, and can potentially simplify our WiX authoring. Obviously, this will cause problems in the case a GUID collision occurs between our product and someone else's, but we find this highly unlikely given that there are still 64 random bits in the GUID. I suppose the real question is: is there something that we're missing? Might this sort of thing affect things outside the ARP on Windows machines? Thank you for your help, Aaron Klor ------------------------------------------------------------------------------ WhatsUp Gold - Download Free Network Management Software The most intuitive, comprehensive, and cost-effective network management toolset available today. Delivers lowest initial acquisition cost and overall TCO of any competing solution. http://p.sf.net/sfu/whatsupgold-sd _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ WhatsUp Gold - Download Free Network Management Software The most intuitive, comprehensive, and cost-effective network management toolset available today. Delivers lowest initial acquisition cost and overall TCO of any competing solution. http://p.sf.net/sfu/whatsupgold-sd _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ WhatsUp Gold - Download Free Network Management Software The most intuitive, comprehensive, and cost-effective network management toolset available today. Delivers lowest initial acquisition cost and overall TCO of any competing solution. http://p.sf.net/sfu/whatsupgold-sd _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users