关于InstallShield .ism XML格式及相关技术细节的问询
问题列表
- 是否有文档说明InstallShield .ism文件的XML格式?InstallShield .ism文件可保存为二进制或XML格式,我关注XML格式。
- 各类XML元素的含义是什么?
- is.xsl是公开可用文件还是专有文件?
- 我正在研究的setup.exe是用IS_v2016创建的,.ism文件使用schema 777,据网上资料这对应IS_v2016版本,setup.exe比.ism晚几个月,但版本应足够接近。
- 我想了解以下代码片段中的DOCTYPE msi是什么意思,运行setup.exe时无法在临时文件夹中捕获MSI文件,我的.ism属于InstallScript-MSI还是InstallScript-non-MSI类型?
背景:我希望充分理解该.ism文件,以便使用其他技术(可能是WIX)重写安装程序。
示例代码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="is.xsl" ?> <!DOCTYPE msi [ <!ELEMENT msi (summary,table*)> <!ATTLIST msi version CDATA #REQUIRED> <!ATTLIST msi xmlns:dt CDATA #IMPLIED codepage CDATA #IMPLIED compression (MSZIP|LZX|none) "LZX">
解答
.ism XML格式文档情况
InstallShield官方并未公开完整的.ism XML格式文档。目前能获取的格式细节多来自社区用户的逆向工程分析、论坛分享等非官方渠道,没有官方发布的正式参考文档。XML元素含义总结
基于社区经验和逆向分析,核心元素含义如下:
<msi>:根元素,承载整个安装项目的核心定义;version属性对应InstallShield的schema版本(如你提到的777对应2016版),compression指定安装包的压缩算法;<summary>:存储项目元数据,包括产品名称、版本、制造商等摘要信息;<table*>:对应MSI数据库中的各类表(如Feature、Component、File等),结构与MSI表字段定义基本匹配,用于描述安装的组件、文件、功能等核心逻辑。
is.xsl的属性
is.xsl是InstallShield自带的专有样式表,用于将XML格式的.ism文件转换为可读的HTML视图。它随InstallShield安装包分发,不属于公开可自由获取的文件,也无公开源码。版本匹配验证
schema 777确实对应InstallShield 2016版本,setup.exe晚于.ism生成数月,只要生成时使用的是同版本InstallShield,两者核心逻辑一致,不会影响对.ism文件的分析。DOCTYPE声明与项目类型判断
DOCTYPE msi是内嵌的XML文档类型定义(DTD)片段,用于定义<msi>根元素的结构、属性及子元素规则,指导XML解析器验证.ism文件的结构合法性。- 无法捕获MSI文件,说明你的项目大概率是InstallScript-non-MSI类型:这类安装包基于InstallScript脚本运行,不会生成独立MSI文件;若为InstallScript-MSI类型,运行时会将MSI提取到临时目录,也可通过
setup.exe /a执行管理员安装尝试提取,能成功提取则为InstallScript-MSI类型,否则为non-MSI类型。
内容的提问来源于stack exchange,提问作者Radim Cernej
相关产品推荐
相关产品推荐

