Beginning with Windows Installer 3.0, bare .msp files can be double-clicked (invoked with the default verb) and will install correctly, assuming no other problems. Windows Installer will determine the updated features based on the changed components and will automatically reinstall those features.
Building quality installation packages not only helps set up your application correctly but also helps maintain your application. A quality installer fosters quality patches. The Windows Installer SDK offers a lot of information about how to author installation packages but how do you do it right?
When running on Windows Installer 3.0 and newer, the MsiPatchSequence table dictates how patches apply to a target product install. When using PatchWiz.dll, you can allow this table to be automatically generated, fill it with data yourself, or even prevent it from being generated if you want Windows Installer 2.0 behavior.
If you’re not familiar with the subst.exe application, it allows you to create DOS devices for a given path using the DefineDosDevice API. Note in the API remarks the following:
Windows Server 2003 and Windows XP: The function creates a device name for a caller that is not running in the LocalSystem context in its own Local MS-DOS device namespace.
JScript.NET was created to be compatible with JScript while benefiting from and providing access to more robust features of the .NET Framework. If you’re accustomed to more oft-used managed languages like C# and VB.NET, catching different types of exception classes should be no stranger.
Want a shell that doesn’t peak at the for command and that’s built on the latest .NET Framework? Monad beta 2 is available for download!
Monad is an object-oriented shell that lets you manipulate output and has an extensible provider model so that you can traverse different data sets.
As mentioned earlier, I wanted to persist your preferences for whether certain collapsible panels were in the collapsed or expanded state. With a simple ECMA-compliant wrapper class around document.cookie and a few minor changes to the CollapsiblePanel class, state for unique panels can be remembered.
Previously I blogged about what is in a patch, but how do patches work? To put it imply, patches transform a view of the product or products that the patch targets.
Patches (.msp files) contain a set of transforms: one transform changes the target product into the upgraded product,
In my seemingly never-ending quest to provide a simple, compact, yet stylish design for this blog I have recently made a customization based on what Josh Ledgard did sometime back to make collapsible panels, though I wanted something more easily reusable. I whipped together an ECMAScript —
Yesterday I blogged about what a patch file (.msp file) contains, as well as most other Windows Installer files. You might find, however, that some of the sample Windows Installer scripts in the Samples\SysMgmt\Msi\Scripts don’t work with patch files. The reason is because you must pass msiOpenDatabaseModePatchFile (32) to the Installer.OpenDatabase automation method.