ICE03:无效的语言 ID。不抑制检索文件信息的解决方案

ICE03: Invalid Language Id. Solution without suppressing the retrieval of file information

我在 Visual Studio 中有一个 WiX v3 的安装项目。构建时,我在两个不同的文件上遇到相同的错误。我想在不抑制文件信息检索的情况下避免此错误。理想情况下,我想通过更改 xml 来解决此问题,以便我的同事将来更容易进行更改。

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

这两个文件的问题是它们的语言是1252。两者都是 90 年代中期的 dll,由其他人发布。

我读到我可以将 -sh 传递给 light.exe 以禁止检索文件信息。或者我可以在 运行 点亮时跳过 ICE03。我宁愿不这样做,因为我可能会错过其他错误。

我已经尝试将产品上的 language 设置为 0。我也尝试过在文件本身上设置默认语言。我尝试了更多与语言相关的标记,但没有成功。

在 xml 中只包含了导致错误的两个文件。以及任何支持 xml 以防感兴趣。

<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>

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.


初步链接:在此期间,让我向您提供一些相关的、预先存在的答案的链接。我假设您已经找到了至少其中之一:

  • wix installer ice03 Invalid Language Id.
  • Wix toolset license agreement multi-languages issue

如后一个答案所示,您可能有一个会话在玩弄整个包的代码页。不过,可能还有比这更好的修复方法。


Ad-Hoc Sample:总是不可能添加一些你没有测试过的东西并让它工作,但就是这样在没有编译器变量的情况下更清晰,在 ProductPackage 元素中设置的 LCID:

<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:

代码页:

其他链接:

  • wix incorrect font used during installation on Windows XP