We are on the eve of the launch of the product, and at the last moment I am bombarded with crash reports, which seem to be related to our installer, which is a WiX3 project with separate outputs for assembling x86 and x64. This is a constant problem that I have always considered fixed, only to find out that they are still hiding.
The product itself is a collection of binary files that communicate with each other through a remote .Net network, including the Windows service and a small COM component that is downloaded as an add-on to another application. The service works like SYSTEM, the COM part works in a low-right context, while the other parts work in normal user contexts. Other parts include a third-party DL library of COM object libraries and a common DLL with Remoting.net interfaces.
I have observed strange behavior with MSI, especially when upgrading the version. Between MS there is an “anal strong name” (in particular, an accurate version check before downloading this assembly), a documented WiX / MSI error that sees critical files deleted during updates (essentially, if the file in the MSI update has the same version number as and the existing installation, this file has been deleted) (editing: there were problems creating the specified documentation ...) and the need to work with Wow64 virtualization (x86 MSI can only write registry entries / HD through Wow64, but x64 MSI cannot work on x86 computers. ..), I am ready to collect all these and transfer to another installation of the system.
What I'm looking for on tips + tricks, tricks or suggestions on how to do it correctly so that I don't fight with the Windows installer, distorted logical thinking. I am tired of struggling with the WiX / MSI / Windows Installer. All you have to do is place the files and registry keys, where I will tell them, update them when necessary, and do not delete anything until the user deletes. Instead, dependencies are removed perforce, creating a whole bunch of fuzzy exceptions (can't wrap the try{} block around function declarations) and GPF in the whole application.
I am particularly interested in the “best practices” and examples regarding common and dependent DLLs and any tips on ensuring that the file needs to go to the GAC, that it really goes to the GAC and stays there until it fits, delete it.
Thanks!
Tom
source share