Browse by Tags

Tagged Content List
  • Blog Post: How to register your program for file extensions shared with other programs

    One frequently asked question is, “how do we register our program for a file extension when other versions (or programs) that handle it might also be installed?” The overarching question is really about how to have non-shared resources both write to a shared resource. But in the case with...
  • Blog Post: Seeing colors with psake

    Psake (pronounced like Japanese “sake”) is a build automation tool similar to others out there like make, rake, etc., but built using PowerShell as the language of choice. So it should be no surprise that I use it for my Windows Installer PowerShell Module . It’s useful for automating...
  • Blog Post: Windows Installer PowerShell Module 2.2.1 Released

    Yesterday I released servicing update 2.2.1 , which updates 2.2.0 to fix a few bugs and add a few cool new features: You can define the [string] $MsiAttributeColumnFormat variable to dictate how attribute columns should appear. The values you can pass are the same as the enumeration format strings...
  • Blog Post: Windows Installer PowerShell Module 2.2.0 Released

    Years ago I released PowerShell cmdlets (“command-lets”) that make querying product and patch information easy and robust. Windows PowerShell is a powerful shell that pipes objects – not simply text – and provides full access to the .NET Framework as part of the language (though higher-level constructs...
  • Blog Post: Help Improve the .NET Framework Deployment Experience

    My colleague Peter Marcu , who is leading the development effort on the new deployment experience for the .NET Framework, is seeking information from our developer customers how you deploy the .NET Framework for your applications. If you’re a developer who requires and needs to deploy the .NET Framework...
  • Blog Post: Functional Testing of Cmdlets

    While developing unit and functional tests for Windows Installer PowerShell Extensions , I needed a way to invoke cmdlets without requiring elevation on Vista. That is, of course, because running elevated has always been a bad idea unless it is required. In order to load a PowerShell snap-in , however...
  • Blog Post: Fixes in Microsoft .NET Framework 2.0 SP1 and 3.0 SP1

    A reader pointed out that the list of fixes for .NET Framework 2.0 Service Pack 1 were published. I also see from the .NET Framework 3.5 download page that the list of fixes for .NET Framework 3.0 Service Pack 1 were also published. Both are listed below. Problems that are fixed in the .NET Framework...
  • Blog Post: Shim Database to XML

    Extracts data as XML from a shim database used for application compatibility . Please leave feedback on the tool here on this page. This was developed using what little public documentation is available on MSDN as well as some experimentation at other functions that were exported from apphelp.dll...
  • Blog Post: EXE Custom Actions are Bad

    Windows Installer custom actions that launch executables (base custom action type msidbCustomActionTypeExe , 0x2) are typically bad and should be avoided. How are they bad? Let the Windows Installer team count the ways . During internal audits we question any EXE custom actions (CAs) but inevitably some...
  • Blog Post: Detection Logic fixed for KB937061 (MS07-052)

    Customers have been offered KB937061 for Visual Studio 2005 Service Pack 1 from Microsoft Update when they have already installed it. The Microsoft Security Response Center blog has more information about the problem and what they have done to fix it. I wanted to add that because patches are cached according...
  • Blog Post: No Environment Change Notification when Reboot Required

    The documentation for the WriteEnvironmentStrings action states, Note that environment variables do not change for the installation in progress when either the WriteEnvironmentStrings action or RemoveEnvironmentStrings action are run. On Windows 2000, this information is stored in the registry and a...
  • Blog Post: Custom Action Guidelines

    Rob Mensching, father of Windows Installer XML (WiX), blogs about why managed custom actions are a bad idea . Aaron Stebner follows up by saying (and has said before ): "Avoid custom actions entirely if at all possible. "Investigate the WiX build-in custom actions if you find a setup action that...
  • Blog Post: Visual Studio 2005 Service Pack 1 Update for Windows Vista Available

    As Aaron notes , the Visual Studio 2005 Service Pack 1 Update for Windows Vista is available on the download center. This patch is available for all supported languages of Visual Studio 2005, unlike the beta which was available in English and Japanese. You should first uninstall the beta update for Vista...
  • Blog Post: Installation Guidelines for User-editable Configuration

    A common problem with installations is user-editable files and registry keys. Configuration of this nature is a problem for every installer technology, but here are some guidelines to help developers overcome problems like users' preferences being reset during repair. Windows Installer is a data-driven...
  • Blog Post: You Can’t Escape Quotes

    SQL expression support is easy to use when modifying Windows Installer packages, but there is one major drawback that continues to cause problems: you can't escape single quotation marks in Windows Installer SQL expressions. Consider the following sample code: TCHAR szSQL[MAX_SQL]; LPCTSTR pszExample...
  • Blog Post: Microsoft .NET Framework 3.0 Released

    Yesterday, the Microsoft .NET 3.0 Framework was released . This is comprised of the .NET Framework 2.0 plus Windows Workflow Foundation, Windows Presentation Foundation, and the Windows Communication Foundation. This release is intended to increase the scope of the original base class library, so while...
  • Blog Post: Digital Signatures in Windows Installer

    Digitally signing files helps protect against changes to a file (or any data, really) by validating that a hash of the current file matches the hash stored in the digital signature. Digital signatures also help verify that a package came from a particular publisher by encrypting the hash with the publisher...
  • Blog Post: Why a Custom Action May Not Run

    When it appears that a custom action in your install package or patch isn't executing, you have to consider a couple of reasons. If the action has a condition in the Condition column of InstallUISequence table , the InstallExecuteSequence table , or any of the other sequence tables...
  • Blog Post: Find the Product

    The Windows SDK Team instructs users how to uninstall older Platform SDK installations without the original source installation media. As part of their instructions, they write, RemoveProgram Files\Microsoft SDK folder This is the painful part: Find all .msi that are releated to the...
  • Blog Post: Deleting Bad Feed Items

    I'm been using the Windows RSS Platform provided for down-level systems with Internet Explorer 7 for a while, but every so often a few blog posts from our MSDN aggregated feed contain markup or links that cause problems, such as absolute-positioned <DIV> s and image sources on servers...
  • Blog Post: Detecting Patches in .NET 2.0 and Visual Studio 2005

    Aaron Stebner posted some sample code to detect whether the .NET Framework 1.0, 1.1, or 2.0 were installed and at what service pack level they are. Basically, the .NET Framework installation writes a common, version-specific registry key in the following location along with an SP level registry...
  • Blog Post: Patch Files Extractor

    Previously I discussed conceptually how to extract files from a patch, mentioning that the transforms contained within patches are stored as sub-storages and the cabinets that contain the files are stored as sub-streams. I've had a tool for a while that extracts the transforms and cabinets from a .msp...
  • Blog Post: Opening Patch Files when Compiled for Unicode

    If you want to open a .msp file with the Windows Installer APIs, you must pass MSIDBOPEN_PATCHFILE to the MsiOpenDatabase function , or ERROR_OPEN_FAILED (110) is returned. Below is the definition of both MSIDBOPEN_PATCHFILE and MSIDBOPEN_READONLY from msiquery.h in the Windows Installer SDK. #define...
  • Blog Post: Identifying Windows Installer File Types

    I've been writing a number of helpful tools at work such as a tool to extract transforms and cabinets from a patch and wasn't satisfied relying on the file extension to identify a patch, or other Windows Installer file types for that matter. File extensions are only one way to help the shell to invoke...
  • Blog Post: Extract Files from Patches

    From the mailbag, someone asked how to extract files from a patch. Now presumably one would want to extract the files as they apply to a product if the patch were installed but I will cover both ways because one can lead to the other. If you're looking for the simplest and quickest way to extract...
Page 1 of 3 (61 items) 123