1

I have a Setup Project for WiX v3 in Visual Studio. When building I am getting the same error on two different files. I would like to avoid this error without suppressing the retrieval of file information. Ideally I want to solve this with changes to the xml to make it easier for my coworkers to make changes in the future.

ICE03: Invalid Language Id; Table: File, Column: Language

The problem with both files is that they have a language of 1252. Both are dll's from the mid 90's and published by someone else.

I have read that I can pass -sh to light.exe to suppress retrieval of file information. Or I can skip ICE03 when running light. I would rather not do that since I could miss other errors.

I have tried setting the language to 0 on the product. I have also tried setting the default language on the files themselves. There is more language related markup I tried but I didn't have any luck.

In the xml have included only the two files that are causing the error. As well as any supporting xml incase it is of interest.

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="MyProject" Language="1033" Version="1.0.0.0" Manufacturer="My Company" UpgradeCode="8156a540-97a9-4d3d-b345-9a6d8b833be9">
        <Package InstallerVersion="200" InstallScope="perMachine" Platform="x86"/>
        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate/>
        <Property Id="INSTALLLOCATION" Value="C:\"/>
        <SetDirectory Action="SetInstallDir" Id="INSTALLDIR" Value="[INSTALLLOCATION]"/>
        <Feature Id="ProductFeature" Title="MyProject" >
            <ComponentGroupRef Id="Run32Components" />
        </Feature>
    </Product>
    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="INSTALLDIR">
                <Directory Id="RRSDIR" Name="RRS">
                    <Directory Id="RUN32DIR" Name="RUN32">
                    </Directory>
                </Directory>
            </Directory>
        </Directory>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="Run32Components" Directory="RUN32DIR">
            <Component Id="PICS2.DLL_Component" Guid="{855DFCC8-50B1-4213-81BA-68878EB31486}">
                <File Id="PICS2.dll" Name="PICS.dll" Source="RUN32\PICS2.DLL" />
            </Component>
            <Component Id="PICSCCRW.DLL_Component" Guid="{A1859D86-1556-497D-8254-118823BF92FB}">
                <File Id="PICSCCRW.DLL" Name="PICSCCRW.DLL" Source="RUN32\PICSCCRW.DLL"/>
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>
Stein Åsmul
  • 39,960
  • 25
  • 91
  • 164
  • Please see my updated answer. Have forwarded to the WiX guys. May need you to write up a WiX bug? Just ignore the whole problem I would say, should be fine (besides the madness of installing 16-bit components :-) ). – Stein Åsmul Dec 28 '18 at 22:43

1 Answers1

0

16-Bit Windows Modules: These two DLL files appear to be 16-bit Windows modules, and as such the language set seems to be a code page and not a language code at all. I will forward to the WiX guys. Just ignore the whole problem I would say, should be fine - barring the madness of installing 16-bit components :-).

Leaving the below for future reference - just in case. Real answer ends here.


Preliminary Links: While at it, let me lob you some links to related, pre-existing answers. I assume you have found at least one of them already:

As seen in the latter answer you might have a session toying with code pages for the whole package. There are probably better fixes than that though.


Ad-Hoc Sample: Always impossible to add something that you haven't tested and have it work, but just so it is clearer without compiler variables, LCIDs set in Product and Package elements:

<Product Id="*" Name="MyApp" Language="1041" Version="1.0.0" 
                Manufacturer="MyCompany" UpgradeCode="PUT-GUID-HERE">

  <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" 
           Languages="1041" SummaryCodepage="932" />

LCID:

CodePage:

Other Links:

Stein Åsmul
  • 39,960
  • 25
  • 91
  • 164
  • Here are links to those files [PICS2.DLL](https://drive.google.com/open?id=1uye49LKVnqNQMlloI-wbC8fETWl8zkSV) [PICSCCRW.DLL](https://drive.google.com/open?id=1yD1JgqKOP_DjUObyswSwHO4F9ZXq7O48) – MooseMaster Dec 28 '18 at 20:41
  • I have tried setting Codepage to 1252. It didn't solve the problem. It seems like the files have their code page value of 1252 entered as there LCID instead. Or by some other mechanism the code page value is being read to the language column of the files table. – MooseMaster Dec 28 '18 at 20:59
  • You had asked if they are old windows files. Although I don't know their purpose in detail I believe they are used for Paradox db access with Borland. – MooseMaster Dec 28 '18 at 21:19