Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>WiX is definitely the way to go in my opinion.</p> <ol> <li><blockquote> <p>when I launch the installer, it should check a text file on the server and see if a newer version is available. If it's the case, then the installer should be able to download the updated installer package and launch it (are there any downloader utilities in WiX?)</p> </blockquote> <p>In my opinion, this type of functionality is best handled by the application. However you can implement such functionality in a custom bootstrapper. The latest development of WiX includes a bootstrapper engine <a href="https://stackoverflow.com/search?q=wix%20burn" title="Burn">Burn</a> that allows you to write your own custom bootstrapper on top of it.</p></li> <li><blockquote> <p>solving dependencies. Major dependency of my app is .NET 4 (which itself depends on Windows Installer 3). The installer should offer the user to download and install them automatically</p> </blockquote> <p>You can use the standard WiX <a href="http://wixtoolset.org/documentation/manual/v3/bundle/authoring_bundle_application.html" rel="nofollow noreferrer">bootstrapper</a> to install .NET as a prereq. Or if you create your own custom managed bootstrapper application, you can install .NET a prereq to your bootstrapper <a href="http://blogs.msdn.com/b/heaths/archive/2011/10/28/introducing-managed-bootstrapper-applications.aspx" rel="nofollow noreferrer">as in this example</a></p></li> <li><blockquote> <p>logging the installation process, also collecting the log file of the dependencies' installation process. I don't want the user to hunt various .log files in case .NET4 or WindowsInstaller3 installation fails. All the information should be collected in one place and if something fails, I should show the user a custom popup dialog with an option to save the complete install log file and send it to me</p> </blockquote> <p>Using the two bootstrapping methods above, when you launch your msi you can specify parameters for logging. In my own custom managed bootstrapper I created a button to open the log files created during installation.</p></li> <li><blockquote> <p>installer should be able to detect if there is a newer version of my app already installed, and show a meaningful customized error message before it exits</p> </blockquote> <p>You can do this using <a href="http://blogs.technet.com/b/alexshev/archive/2008/02/10/from-msi-to-wix-part-3.aspx" rel="nofollow noreferrer">launch conditions</a></p></li> <li><blockquote> <p>installer should be able to detect if there is an older version of my app already installed. and offer the user to exit installation or uninstall the previous version and install the new version. BTW, there are no minor component upgrades planned, I prefer to reinstall everything fresh (I guess, this is a major upgrade in the terms of WindowsInstaller). Installshield LE failed on me for this, it just showed an error box with the message about another product, but did not offer to uninstall it</p> </blockquote> <p>In my experience this <a href="http://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html" rel="nofollow noreferrer">major upgrades</a> are the least complicated approach.</p></li> <li><blockquote> <p>in case of an upgrade, installer should be able to detect if some of application components are in use (running application processes) and show a custom error message and not just some cryptic "Installation failed"</p> </blockquote> <p>I think WiX/Windows Installer are generally good at handling these scenarios and automatically notifying the user that files/applications need shutdown without you having to author anything extra in your installer.</p></li> </ol> <p>All that said, you may want to look into creating your own custom managed bootstrapper using WiX and Burn. That is not trivial however. The best place to go is to download the source code to the WiX <a href="http://wixtoolset.org/releases" rel="nofollow noreferrer">Weekly Releases</a> and checkout the project src\Setup\WixBA. It is the custom BA that they wrote to install WiX. There isn't much documentation out there yet because WiX 3.6 is not released (although it is pretty stable). However you don't have to create your own BA to make a solid WiX installer that can handle upgrades and logging.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload