Syntax for guids in WIX?

Component GUIDs: On Component GUIDs and when they should change: Change my component GUID in wix? Auto-guids and default attribute values In addition to Bob Arnson’s advice: Recent versions of Wix allows GUIDs to be auto-generated for several things, most significantly component GUIDs. It also covers package-, product- and patch-codes. It also allows skipping some, … Read more

WiX installer msi not installing the Winform app created with Visual Studio 2017

WiX Resources: A couple of links first: WiX quick start resources. Hello WiX C# Custom Actions. “Hello WiX” (transparent aluminum please) I think what you need is the “Hello World” of WiX from CodeProject. This is quite old now, but still good at showing you the very basics of getting a working MSI compiled. UPDATE: … Read more

WiX tricks and tips

Keep variables in a separate wxi include file. Enables re-use, variables are faster to find and (if needed) allows for easier manipulation by an external tool. Define Platform variables for x86 and x64 builds <!– Product name as you want it to appear in Add/Remove Programs–> <?if $(var.Platform) = x64 ?> <?define ProductName = “Product … Read more

How do I avoid common design flaws in my WiX / MSI deployment solution?

WiX / MSI Deployment Anti-Patterns There are several deployment anti-patterns often seen in WiX / MSI files. Below is a rough-draft of some of the most common ones. Before going into the problems, on the other hand here is a quick reminder of the things that have made MSI an overall success! (despite its problems). … Read more

How to implement WiX installer upgrade?

Finally I found a solution – I’m posting it here for other people who might have the same problem (all 5 of you): Change the product ID to * Under product add The following: <Property Id=”PREVIOUSVERSIONSINSTALLED” Secure=”yes” /> <Upgrade Id=”YOUR_GUID”> <UpgradeVersion Minimum=”1.0.0.0″ Maximum=”99.0.0.0″ Property=”PREVIOUSVERSIONSINSTALLED” IncludeMinimum=”yes” IncludeMaximum=”no” /> </Upgrade> Under InstallExecuteSequence add: <RemoveExistingProducts Before=”InstallInitialize” /> From … Read more

What is the purpose of administrative installation initiated using msiexec /a?

Administrative Installation: Adding some practical examples. 1) Silent running extraction (no GUI): msiexec.exe /A MySetup.msi TARGETDIR=D:\Extract\ /QN /L*V D:\Extract.log 2) Interactive extraction (setup GUI for extract): msiexec.exe /A MySetup.msi Quick parameter explanation: – /A – run administrative installation sequence. – /QN – run completely silently (alternatively: /QB! for semi-silent). – /L*V “Extract.log” – create verbose … Read more

Extract MSI from EXE

For InstallShield MSI based projects I have found the following to work: setup.exe /s /x /b”C:\FolderInWhichMSIWillBeExtracted” /v”/qn” This command will lead to an extracted MSI in a directory you can freely specify and a silently failed uninstall of the product. The command line basically tells the setup.exe to attempt to uninstall the product (/x) and … Read more

Why is it a good idea to limit the use of custom actions in my WiX / MSI setups?

Core: Essentially custom actions are complex to get right because of complexity arising from: Sequencing-, Conditioning- (when it runs – in what installation mode: install, repair, modify, uninstall, etc…) and Impersonation-issues (security context it runs in). It results in overall poor debugability – very hard hard work to test in all permutations. Application Launch: Solution? … Read more