问题
I have a night build which runs on different machine then mine
on my machine i can compile the installer and use the msi without a problem
however on the night build machine i get
C:\Builds\73\Tools\AppInstaller\src\AppInstaller\APPExportReleaseDir.wxs (693): ICE03: Invalid Language Id; Table: File, Column: Language, Key(s): filAAED19CB2C0BBE304CDB8EB1AAF7473F
The file which is showing that is system.windows.interactivity.xml
Can you please explain what are ICE03 errors and how can I fix this ?
It says here to remove the Language or set it to "0" http://softwarepackaging.co.uk/iceerrors but there is no explanation.
回答1:
Do you really even need to include that file in your MSI? Typically xml files with the name of the assembly are just useful to developers as SDK documentation and doesn't belong in a shipped product.
For that matter, did you even author the wxs or are you using some form of dynamic authoring at build time? If so, add this to my list of reasons of why this is an anti-pattern. (Don't worry, almost no one else wants to believe me either. )
For more information on ICE's ( basically unit tests ) see:
MSI Tip: Authoring an ICE using C# / DTF
回答2:
ICE rules are Internal Consistency Evaluators - essentially a series of self-diagnosis scripts checking database referential integrity, database consistency, data type and schema compliance as well as running several content validation tests or logical tests on the whole MSI (which is really an MS-SQL database in disguise).
DB Integrity: In other words you check the content of the database against the database schema and a number of content validation rules and determine if the database is objectively speaking containing what it is supposed to, and that it is connected in correct ways.
Sanity-Checks: Some further checks move beyond simple schema and type checking and perform sanity-checks relating to how the application is actually being installed. Certain files should not go to certain locations, some registry keys should never be written to, and similar checks. Custom checks can be created and added as QA steps for corporate deployment.
Custom Actions: The checks are written as custom actions (essentially MSI's mechanism for running executable, custom installation logic during installation) and inspect and evaluate the database during a Validation run. The Windows SDK tool Orca is capable of running validation on any MSI file as illustrated in this picture:
ICE3: Your particular error message relates to ICE03:
Invalid Language Id - The database contains an invalid numeric Language Identifier (LANGID). See the Language data type. See Language Identifier Constants and Strings. For example, 1033 for the U.S. and 0 for language neutral.
In your case you need to remove the language specifier altogether if the file is language neutral, or fix your Wix source file to set an appropriate language code. Here is an example from the MSI file installing Orca (1033 is English, most files are unspecified, meaning they are language neutral):
来源:https://stackoverflow.com/questions/24793346/wix-installer-ice03-invalid-language-id