我有一个夜间构建,在不同的机器上运行然后我的 在我的机器上,我可以编译安装程序并使用msi没有问题 但是在晚上的机器上我得到了
C:\ Builds \ 73 \ Tools \ AppInstaller \ src \ AppInstaller \ APPExportReleaseDir.wxs(693):ICE03:无效的语言ID;表:文件,列:语言,密钥:filAAED19CB2C0BBE304CDB8EB1AAF7473F
显示的文件是system.windows.interactivity.xml
您能解释一下ICE03错误是什么以及如何解决这个问题?
这里说删除语言或将其设置为“0” http://softwarepackaging.co.uk/iceerrors但没有解释。
答案 0 :(得分:3)
ICE规则是Internal Consistency Evaluators - 本质上是一系列自我诊断脚本检查数据库参照完整性,数据库一致性,数据类型和架构合规性以及在整个MSI上运行几个内容验证测试或逻辑测试(这是真的是伪装的MS-SQL数据库。)
换句话说,您根据数据库架构和许多内容验证规则检查数据库的内容,并确定数据库是否客观地说出包含它应该是什么,以及它是否以正确的方式连接。
一些进一步的检查超越了简单的模式和类型检查,并执行与应用程序实际安装方式相关的健全性检查。某些文件不应该转到某些位置,某些注册表项永远不应该写入,以及类似的检查。可以创建自定义检查并将其添加为企业部署的QA步骤。
检查写为custom actions(基本上是MSI在安装期间运行可执行,自定义安装逻辑的机制),并在验证运行期间检查和评估数据库。 Windows SDK工具Orca能够在任何MSI文件上运行验证,如下图所示:
您的特定错误消息与ICE03:
有关语言标识无效 - 数据库包含无效的数字语言标识符(LANGID)。请参阅Language data type。见Language Identifier Constants and Strings。例如,美国为1033,语言为中性为0。
在您的情况下,如果文件是语言中立的,则需要完全删除语言说明符,或者修复Wix源文件以设置适当的语言代码。以下是安装Orca的MSI文件的示例(1033是英文,大多数文件未指定,意味着它们是语言中立的):
答案 1 :(得分:2)
你真的需要在MSI中包含该文件吗?通常,具有程序集名称的xml文件对开发人员仅作为SDK文档有用,并且不属于已发布的产品。
就此而言,您是否甚至创作了wxs,或者您是否在构建时使用某种形式的动态创作?如果是这样,请将此添加到我为什么这是反模式的原因列表中。 (别担心,几乎没有人想要相信我。)
有关ICE(基本单元测试)的更多信息,请参阅: