Search code examples
wixinstallationfirebreath

can't show dialog in WiX installer


I'm modifying default FireBreath WiX script to show simple message after installation is complete. Because sometimes it is so quick, user doesn't get a chance to notice it.

I have this wxs file

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" ">
        <Package ... />
        <Upgrade Id="{369b048a-9f97-5e15-8ce3-c983fa5764d3}">
            <UpgradeVersion
                Property="OLD_VERSION_FOUND"
                Minimum="0.0.1" IncludeMinimum="yes"
                Maximum="0.3.3.3" IncludeMaximum="yes"
                OnlyDetect="no" IgnoreRemoveFailure="yes"
                MigrateFeatures="yes" />
        </Upgrade>
        <Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />
        <InstallExecuteSequence>
            <RemoveExistingProducts After="InstallInitialize" />
            <InstallExecute After="RemoveExistingProducts" />
        </InstallExecuteSequence>        

        <Directory Id="TARGETDIR" Name="SourceDir">
            ...
        </Directory>

        <Feature Id="MainPluginFeature" Title="Plugin" Level="1">
            <ComponentRef Id="InstallDirComp"/>
            <ComponentRef Id="PluginNameDirComp"/>
            <ComponentRef Id="CompanyDirComp"/>
            <ComponentGroupRef Id="PluginDLLGroup"/>
        </Feature>

      <UI>
        <Property Id="DefaultUIFont">DlgFont10</Property>
        <TextStyle Id="DlgFont10" FaceName="Tahoma" Size="10" />

        <Dialog Id="CompleteDlg"
            Width="370"
            Height="270"
            Title="Plugin installed">

          <Control Id="Description"
               Type="Text"
               X="50"
               Y="70"
               Width="220"
               Height="80"
               Text="Installation complete, return to web browser." />

          <Control Id="Finish"
               Type="PushButton"
               X="180"
               Y="243"
               Width="56"
               Height="17"
               Default="yes"
               Cancel="yes"
               Text="OK">

            <Publish Event="EndDialog" Value="Exit" />
          </Control>
        </Dialog>

        <InstallUISequence>
          <Show Dialog="CompleteDlg" OnExit="success" />
        </InstallUISequence>

        <AdminUISequence>
          <Show Dialog="CompleteDlg" OnExit="success" />
        </AdminUISequence>
      </UI>
    </Product>
</Wix>

but when I build it, I get these error messages
Error 2 error LGHT0204 : ICE20: Standard Dialog: 'FilesInUse' not found in Dialog table
Error 3 error LGHT0204 : ICE20: ErrorDialog Property not specified in Property table. Required property for determining the name of your ErrorDialog
Error 4 error LGHT0204 : ICE20: FatalError dialog/action not found in 'InstallUISequence' Sequence Table.
Error 5 error LGHT0204 : ICE20: FatalError dialog/action not found in 'AdminUISequence' Sequence Table.
Error 6 error LGHT0204 : ICE20: UserExit dialog/action not found in 'InstallUISequence' Sequence Table.
Error 7 error LGHT0204 : ICE20: UserExit dialog/action not found in 'AdminUISequence' Sequence Table.

I don't need any other dialogs, only this one. How to fix this? Can I just ignore these messages?


Solution

  • If a package has any dialogs, Windows Installer requires that it have a minimum set to show UI, mostly under error conditions. The ICE20 documentation has the full list.