How to customize error screen in MSI installer?

In a VS 2008 install / deployment project, is there a way to add a custom error dialog (or customize an existing one) to handle errors that occur during the installation process?

+2


a source to share


2 answers


If I understand you correctly:

Not really for your software, but you can handle errors for your software components, which cause errors in most cases. First you have to navigate to the package folder of the required files. Typically this will be "C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages \". Find your package folder, navigate there, a folder named "en" will appear, and inside it is an xml file named "package.xml". Open it with a text editor and you will see:

    <InstallChecks>
    <RegistryCheck Property="DotNet35SP" Key="HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5" Value="SP" />
</InstallChecks>

<!-- Defines how to invoke the setup for .NET Framework redist -->
<Commands Reboot="Defer">
    <Command PackageFile="dotNetFx35setup.exe" 
         Arguments=' /lang:enu /passive /norestart' 
         EstimatedInstalledBytes="30000000" 
         EstimatedTempBytes="30000000">

        <!-- These checks determine whether the package is to be installed -->
        <InstallConditions>
            <!-- This indicates .NET Framework is already installed -->
            <BypassIf Property="DotNet35SP" Compare="ValueGreaterThanOrEqualTo" Value="1"/>

            <!-- Block install if user does not have admin privileges -->
            <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>
            <!-- Block install on less than Windows XP SP2 -->
            <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatformWinNT"/>

            <!-- Block install on W2K3 with no service pack -->
            <FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.0" String="InvalidPlatformWinNT"/>

            <!-- Block install if the platform is IA-64 -->
            <FailIf Property="ProcessorArchitecture" Compare="ValueEqualTo" Value="IA64" String="InvalidPlatformArchitecture" />
        </InstallConditions>

        <ExitCodes>
            <ExitCode Value="0" Result="Success"/>
            <ExitCode Value="1602" Result="Fail" String="UserCancelled"/>
            <ExitCode Value="1603" Result="Fail" String="GeneralFailure"/>
            <ExitCode Value="3010" Result="SuccessReboot"/>
            <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
        </ExitCodes>

    </Command>
</Commands>

<!-- Defines a localizable string table for error messages-->
<Strings>
    <String Name="DisplayName">.NET Framework 3.5 SP1</String>
    <String Name="Culture">en</String>
    <String Name="AdminRequired">Administrator permissions are required to install .NET Framework 3.5 SP1. Contact your administrator.</String>
    <String Name="InvalidPlatformWinNT">Installation of the .NET Framework 3.5 SP1 requires Windows XP SP2, Windows 2003 SP1, Windows Vista, or later. Contact your application vendor.</String>
    <String Name="InvalidPlatformArchitecture">This version of the .NET Framework 3.5 SP1 is not supported on an IA-64 operating system. Contact your application vendor.</String>
    <String Name="UserCancelled">The user has cancelled the installation. .NET Framework 3.5 SP1 has not been installed.</String>
    <String Name="GeneralFailure">A failure occurred attempting to install .NET Framework 3.5 SP1.</String>
    <String Name="DotNetFX35SP1Exe">http://go.microsoft.com/fwlink/?linkid=118076</String>
</Strings>

      



Between the "InstallConditions" tags, you can add / remove conditions to install a preset. Then, between the "line" tags, you can customize the error messages.

For more information: http://msdn.microsoft.com/en-us/library/ms229223.aspx

+1


a source


You can add additional dialogs, but I don't think you can redirect errors to them. With Studio setup projects, I think you are stuck with built-in error handling.



You will need to use a third party product such as InstallShield or manually edit the installer (MSI) to get the functionality you want.

0


a source







All Articles