Book Image

WiX 3.6: A Developer's Guide to Windows Installer XML

Book Image

WiX 3.6: A Developer's Guide to Windows Installer XML

Overview of this book

The cryptic science of Windows Installer can seem far off from the practical task of simply getting something installed. Luckily, we have WiX to simplify the matter. WiX is an XML markup, distributed with an open-source compiler and linker, used to produce a Windows Installer package. It is used by Microsoft and by countless other companies around the world to simplify deployments. "WiX 3.6: A Developer's Guide to Windows Installer XML" promises a friendly welcome into the world of Windows Installer. Starting off with a simple, practical example and continuing on with increasingly advanced scenarios, the reader will have a well-rounded education by book's end. With the help of this book, you'll understand your installer better, create it in less time, and save money in the process. No one really wants to devote a lifetime to understanding how to create a hassle-free installer. Learn to build a sophisticated deployment solution targeting the Windows platform in no time with this hands-on practical guide. Here we speed you through the basics and zoom right into the advanced. You'll get comfortable with components, features, conditions and actions. By the end, you'll be boasting your latest deployment victories at the local pub. Once you've finished "WiX 3.6: A Developer's Guide to Windows Installer XML", you'll realize just how powerful and awesome an installer can really be.
Table of Contents (23 chapters)
WiX 3.6: A Developer's Guide to Windows Installer XML
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Downloading packages


As we saw in the previous chapter, we can download a package from the Internet or a local network, as in the following example where we use the NetFx40Web package from WixNetFxExtension to download the .NET Framework:

<Chain>
   <PackageGroupRef Id="NetFx40Web"/>
   <MsiPackage SourceFile="Lib\MyInstaller.msi" />
</Chain>

In order for our custom UI to allow this download to proceed, we must handle the ResolveSource event. The following is an example that uses an anonymous method in our viewmodel's constructor:

this.model.BootstrapperApplication.ResolveSource += 
   (sender, args) => 
{ 
   if (!string.IsNullOrEmpty(args.DownloadSource))
   { 
      // Downloadable package found 
      args.Result = Result.Download; 
   } 
   else 
   { 
      // Not downloadable 
      args.Result = Result.Ok; 
   } 
};

We check if the package has a DownloadSource attribute and if it does, we set the Result property to Result.Download. This will allow the download...