Wix Windows Installer

Windows Wix Installer

It is the best place to get advice on all aspects of WiX. Installing Windows and creating WiX I' d just like to include some more specialized tech information about the Windows Installer technologies themselves, and some of the story that led to the WiX toolskit being created, as this contribution can be found by those just getting into the installer, WiX, and Windows Installer business.

There' also a pretty much-loved server error. com articles that might be useful to understand the advantages of Windows Installer: Enterprise-level advantages of using MSIs ( many developer don't like Windows Installer, but the advantages of deploying an enterprise are actually quite significant - maybe a fast buck is really rewarding if you think MSI causes more problems than it's worth).

Basically, MSIs are torn down SQL Server database that are saved as COM-structured memory executables. It is the Microsoft Office document type (note that MS Office used to use OLE / COM documents - newer releases now use Office Open XML), and it was developed as a way to save hierachical information in a unique one.

Basically a filesystem within a single data stream with different memory stream formats - one of these are the data to be installed in one or more Labs. The best way to modify MSI datasets / data bases is to use third-party utilities such as InstallShield, Advanced Installer and Wise Package Studio (no longer available for regulatory reasons - see comparing currently available MSI tools).

Those utilities saved the MSI files in their natively "installable" formats as COM-structured memory files. That means that your MSI has been both sources and executables - in binaries. That made the sources of your install projects hard to be controlled. Binaries differences on different MSI bases have been tricky, and due to referent databank integrity, even the most fundamental changes in MSI are cascaded through tens of spreadsheets, making it hard to see what has even happened to skilled souls.

The WiX was developed as a way for a developer to enable the generation of a binaries MSI from normal text-sources. Like a normal EXE binaries, an MSI binaries is "compiled" from WiX text ML fiels. It is a huge step forward in how you manage your approval processes and understand changes in the MSI data base.

Indeed, WiX is taking MSI from its roots to the "XML age" of today, allowing designers to work with text documents, and the MSI documents can be considered compile executable documents as distinct from data base resource documents. It' actually possible to create good MSIs without too much knowledge of the inner life of the MSI - provided you obey WiX best practice - and rely on me as a programmer to keep you out of MSIs.

This has to do with the complexities of saving an entire installer as a unique one. It' almost completely declarative rather than formal - but some parts are selective and specify the order of installations. Those sequence constructions are among the most intricate parts of an MSI with "elevated privileges" and filesystem operation performed as a data base operation.

If you''re learning MSI as a programmer, you'll get the feeling that "something's not right with this design," and the reality is that all the tech was developed around Office delivery needs back then - and it became as complicated as it had to be.

In addition, MSIs can be a look ahead to the tomorrows - perhaps Windows will use SQL Server as the primary memory tool in the tomorrows, and MSI is the first move to turn provisioning into a "declarative language" or a giant SQL command for what will occur during provisioning on the destination system?

When WiX can't, it probably tries to help you prevent provisioning issues. Mostly, we find that uncommon set-up themes and the use of user-defined action can cause a great deal of useless complexities, or Deployment Anti-Patterns, if you like, and the issue can often be prevented by small changes in your applications theme or the use of integrated MSI constructions.

Good managers will make it possible to facilitate provisioning, but they must be able to see why it is necessary. As an example of how you can do things differently and make provisioning easier by eliminating obsolete or unnecessarily complex applications and provisioning approaches, I like to see licencing. Eliminate needless (read/write) action at any price - it quadruples the complexities and risks of set-up.

My own view is that read-only user-defined action (which can change properties) is the opposite: it is encouraged. Finally, to conclude things in terms of scripting, there is general consensus among deployers that all kinds of scripted action are generally difficult to bug, susceptible to antivirus interferences, and without the linguistic capabilities required to deploy sophisticated encoding constructions.

User-defined operations with administered source are possible (.NET), but due to their need for . NET to be deployed, the secure suggestion is to use C++ to perform user-defined operations. There' s a long "discussion" about this topic here: advantages and disadvantages of different user-defined activity modes (not great, just an excerpt from practice).

However, it may be rewarding to take a look - user-defined action is the main cause of delivery failure (link to my anti-transmission propaganda), and that takes us to the next point: the overall complexities of delivery (and how to handle it). Deployment is the intricate task of moving mixed targets from one state to another - this calls for a discipline, because bugs are inherently accumulative - you often cause more trouble the more you try to fix things with a workaround.

Logs can help if they are performed correctly, but they are often not provided when you need them for Debugging, or they are in the incorrect file formats or details, or they are simply pointless, because user-defined operations often don't record things correctly. Destination environments (and environments ) differ in almost every conceivable way (this is also the case when it is a SOE (Standard Operating System ) as used by most organizations for standardised OOS deployments and packages): different drivers and drivers (large and small), different clients (fat clients / thin clients), different terminals, different platforms (x86/x64/etc...), different versions (Win7, Win10, WinXP, etc.).

operating system editors (ultimate, home, etc...), operating system languages, operating system upgrades stats and patches, operating system levels, malware situations, hard drive problems, partition schemes, file system usage, encrypted files, UAC configurations, system privileges configurations (NTRights), connectivity protocols, connectivity speeds, networking configurations (domain, working group, etc...), subnetworks, proxies setups, e-mail systems and configurations (domain, working group, etc...), subnetworks, operating system languages, operating system upgrades stats and patches, and more. ATL, ADO, OLE DB, ADO. NET, Java, script runtimes), COM and DCOM objects registry and configure, COM+, IIS and Web server, pathname and environment variable, data association and shell operation, cordless operation, script unavailability, script locking, all kind of run-time releases (C, C, C++, MFC, ATL, ADO, ADO. NET, Java), remote access, script complex, authentification schema, networking share and drive, remote access, COM+, IIS and Web server, files association and shell operation, and more.

NET version & config, voice packages, GAC and WinSxS state and configurations (policy files), SW Firewall, simulated / virtualised system, provisioning system (SCCM, Tivoli, etc...). Deploying is a straightforward approach with a complex mixture of variable types that can cause the most puzzling bugs - even the developer's favorite: the intermediate one.

Read more about how to deploy and what a state-of-the-art installer needs to do: Which is the use and the actual reason of the install? The Visual Studio MSI is an easy way to build an MSI as part of Visual Studio, and its functionality was tight.

Lectures were given to substitute the MSI projector in Visual Studio for a WiX ML projector, so folks are now building their MSIs. The Orca is the Windows SDK utility that allows you to open, edit and compare to a certain extent your binaries MSIs. while working in the Windows Installer for Microsoft.

It also allows other surgeries such as creating transformation file to modify MSI file and some other engineering surgeries. Although it is a very fundamental utility without the most sophisticated functionality of commercially available utilities, its dependability, ease of use and "cleanliness" make it a popular packer of applications and available for de-bugging and small corrections - it does not give an MSI a "standard junk" when saved (third-party utilities include user-defined spreadsheets and similar junk).

To reach Orca, you need to download and run the Windows SDK (!). If you have Visual Studio and the SDK up and running, look for Orca-x86_de-us.msi and reinstall it. But if you don't, maybe you have a Visual Studio boyfriend who's looking for him and then sends him to you?

It'?s a small data base. Also there are some alternate free utilities as described here (below): How can I check the contents of two (or more) MSIs? The DTF - Deployment Tools Foundation is a NET class suit of class that programmatically deals with MSIs. It' a critical part of any effort to help automatize the enterprise-wide use of MSIs.

DTF's help file will get you going quickly with the help of the DTF utility, and you will never look back on using Win32 features or COM class to gain MSI file permission. Many other Windows Installer utilities are available on the web, and some of them can be found under Which installer to use, in comparison to WiX?

InstallShield, WiX, Wise, Advanced Installer, etc. (same as above).

Mehr zum Thema