0

About 18 months ago I built a Wix installer for my program. It only has to install 3 files, an exe, a chm and a licence file. The exe and chm are the same for each user, but the licence file is different. I build a new msi, with the appropriate licence, for each user. This is OK for me because I only get new users about once a week (if I'm lucky!), so it's not a big deal to spend 10 minutes on the build. The installer works well.

A few months ago, I released an update that needed a new exe and chm. I ended up rebuilding a new msi for each user as a major upgrade, and sending it indivdually to each user (by then about 50). It was a pain, but it worked OK. However, it seems obvious that there must be a way to have just a single patch, that replaces the exe and chm (which are identical for all users), but leaves their existing licence untouched. Then I could just send a single file to each user, which would be a lot less work.

I have been reading the tutorials, and the Ramirez book, and they all talk about building a patch by comparing the original msi with the new one. However, in my case the original msi's are different for each user. I have got into rather a tangle trying to figure it all out (I am obviously NOT an experienced install builder), so any advice, or better still example code or tutorial, would be really welcome.

Thanks.

Bill Heitler
  • 187
  • 3
  • 13
  • I don't have much time now. but many setups for different customers cause many problems. There will be lacking QA and UAT for each MSI and there is a heightened risk of false positives - a terrible problem if it hits you. A setup file should be "well known" and recognizable by anti-virus scanners and Windows Defender or it might be flagged as unsafe. There is also sheer confusion in terms of all the versions to manage. Which have problems? How to get upgrades to work - as you state. There are several other issues... – Stein Åsmul Oct 25 '21 at 03:06
  • I view licensing as something that should happen in the application itself on launch, preferably over the Internet so that activation can be smooth and instant without any specific files distributed at all. The application simply generates a user-profile license file after communicating with a server. There are components to do this - usually quite pricey. Some answers of mine (not 100% match for your issue): [1](https://stackoverflow.com/a/56507479/129130), [2](https://stackoverflow.com/a/24360658/129130). [And how licensing can be complicated](https://stackoverflow.com/a/68559680/129130). – Stein Åsmul Oct 25 '21 at 03:09
  • There are other deployment mechanisms such as [MSIX](https://www.advancedinstaller.com/msix-introduction.html) that could be relevant for you to try. I am not sure what scope your project has for the future, but you certainly need a better deployment strategy. Don't worry, it is quite common to have such problems. You can always seek out a deployment consultant if needed, but first I would try to eliminate the license file distribution and use another form of licensing that is easier to deploy. Would a web-app be possible? (just login and authentication). – Stein Åsmul Oct 25 '21 at 03:11

1 Answers1

0

OK, so my problem was that I had put the licence and the exe/chm in the same fragment in the original installer. I had missed the bit in the patch documentation that said that a ComponentRef in the patch wxs will pull in "all neighboring components from the same fragment".

I think I am screwed regarding the individual msi's I have already sent out to users, they'll have to get an individual major upgrade msi for the next upgrade. But I will change my primary msi installer, and hopefully after that (and for new users from now on) I'll just be able to supply a single msp file to upgrade all users.

Sorry if anyone has wasted any time on my question. It would obviously have been better if I had planned properly for upgrades from the start, but as always, it's the "unknown unknowns" that bite you.

Bill Heitler
  • 187
  • 3
  • 13