Windows Installer 和徽标要求
Microsoft Windows 认证徽标标识已通过独立测试验证符合 Windows 应用程序规范的产品。 此规范由 Microsoft 与客户和其他开发人员合作制定,为构建可靠且可管理的应用程序提供路线图。 符合规范的软件供应商有资格获得 Microsoft Windows 认证徽标,然后许可将该徽标用于其产品包装、广告、宣传材料和其他营销材料。
有关应用程序的 Windows Vista、Windows XP 和 Windows Server 2008 认证的详细信息,请参阅 Microsoft 合作伙伴网络。
如果要为应用程序创作安装包,可以利用 Microsoft Windows Installer 的功能来帮助满足一些认证要求。 下表提供了指向 Windows Installer 文档中与某些认证要求相关的信息的链接。 请注意,并非应用程序规范中讨论的每个认证要求都依赖于 Windows Installer。
认证要求 | 请参阅以下部分 |
---|---|
1.1 应用程序应执行主要功能并保持稳定性。 |
如果提供安装包,应用程序可以使用所有 32 位 Windows 平台上提供的安装程序服务。 使用安装程序可以提高应用程序的功能和稳定性。 请参阅复原能力和 Windows Installer 概述 Windows Installer 文档路线图。 |
1.3 应用程序应支持长文件名和 UNC 路径 |
安装程序支持在 UNC 和驱动器网络之间安装,并且始终使用包中提供的长文件名,除非设置了 SHORTFILENAMES 属性或目标卷不支持长文件名。 请参阅 Filename、File 表、Directory 表、SHORTFILENAMES 属性。 |
1.5 应用程序不应在 Win.ini、System.ini、Autoexec.bat 或 Config.sys 中进行读取或写入。 |
安装程序应将条目添加到注册表而不是 Win.ini、System.ini、Autoexec.bat 或 Config.sys。 Windows Installer 支持注册表中的信息项。 当应用程序使用安装程序时,这些注册表项作为安装程序属性提供。 可以为应用程序创作包,以便轻松检查和设置这些项的值。 如果应用程序使用了你不想放入注册表中的信息,请创建一个专用初始化文件,并将其放入应用程序的可执行文件所在的目录中。 通过使用 Windows Installer 安装应用程序,可以轻松管理专用 .ini 文件的安装,以及在现有 .ini 文件中添加或移除信息。 请参阅修改注册表、注册表组、Registry 表、RemoveRegistry 表、WriteRegistryValues 操作、RemoveRegistryValues 操作、卸载注册表项、属性、File 表、Directory 表、使用 Directory 表、IniFile 表、RemoveIniFile 表、IniLocator 表、WriteIniValues 操作、RemoveIniValues 操作、RemoveIniFile 表。 |
1.7 应用程序应正确执行 Windows 版本检查。 |
为应用程序准备安装包时,必须包含有关产品操作系统版本要求的信息。 初始化时,安装程序会自动将某些属性设置为当前操作系统的版本。 安装程序可以使用这些安装程序属性来提供简单的版本检查。 请参阅属性、Version9X 属性、VersionDatabase 属性、VersionNT 属性、WindowsBuild 属性、ProductCode 属性、ProductName 属性、ProductVersion 属性、摘要信息流、修订号摘要属性。 |
2.1 应用程序应使用通过验证测试的 Windows Installer 包进行安装。 |
可以使用一组特定的验证规则(称为内部一致性评估器 - ICE)来检查安装包是否通过了验证测试。 这些 ICE 包含在 Logo.cub 文件中。 要获得认证资格,安装包在使用这些规则进行验证时不得产生任何错误。 警告是可以接受的,但通常应该更正。 Windows Installer SDK 包括 Logo.cub、Darice.cub 和 Mergemod.cub 文件。 Logo.cub 文件中的 ICE 包含在 Darice.cub 文件中。 如果包使用 Darice.cub 通过验证,则其也会通过 Logo.cub 验证。 有关详细信息,请参阅包验证。 |
2.2 用于安装应用程序的安装包应遵循创建组件的规则。 |
安装程序组件是应用程序的一部分,始终作为一个整体进行安装或移除。 有一组规则可帮助确定将应用程序划分为组件的最佳方式。 如果正确定义了安装包中的组件,安装程序可以安全地安装和移除它们。 请参阅将应用程序组织为组件、组件和功能、更改组件代码、如果组件规则损坏会发生什么情况?、使用功能和组件、Component 表。 |
2.3 应用程序的安装包应标识共享组件。 |
如果提供的安装包将应用程序正确组织为组件,并在 Component 表中设置了 msidbComponentAttributesSharedDllRefCount,则 Windows Installer 可以使用组件密钥文件的共享 DLL 注册表中的引用计数来跟踪共享组件。 如果不使用安装程序,则应用程序必须通过在 SharedDL 注册表项中递增 DLL 的使用计数器来跟踪其对共享 DLL 的使用情况。 有关详细信息,请参阅 Directory表、使用 Directory 表、Component 表。 有关 SharedDllRefCount 位的讨论,请参阅 Component 表、将应用程序组织为组件。 |
2.4 默认情况下,应用程序应安装到 Program Files 文件夹。 |
初始化时,安装程序会根据 Program Files 文件夹的完整路径设置某个属性。 准备安装包时,可以指定安装程序默认将应用程序安装到此文件夹。 如果安装包中还包含 UI,安装程序可以为用户提供选择其他安装位置的选项。 有关详细信息,请参阅 Directory 表、使用 Directory 表、TARGETDIR 属性、MsiSetTargetPath、属性、ProgramFilesFolder 属性。 |
2.5 应用程序应正确支持添加/移除程序文件。 |
可以通过在应用程序的 Windows Installer 包中设置某些安装程序属性值,提供控制面板中的“添加/移除程序”所需的所有信息。 设置这些属性会自动将相应的值写入注册表。 请参阅属性、必需属性、ProductName 属性、ARPINSTALLLOCATION 属性、Manufacturer 属性、ProductVersion 属性。 |
2.6 应用程序应确保 Windows Installer 包支持播发。 |
通过组织应用程序进行播发,并在应用程序的 Windows Installer 包中包含播发所需的所有信息来支持播发。 有关详细信息,请参阅播发、按需安装、发布产品、功能和组件、播发的平台支持、组件和功能、建议的 AdvtExecuteSequence、建议的 AdvtUISequence、Advertise 属性、Advertise 操作、PublishProduct 操作、Feature 表、Shortcut 表、Class 表、Extension 表、Icon 表、MIME 表、ProgId 表、TypeLib 表、Verb 表、MsiConfigureFeature、MsiConfigureProduct。 |
2.7 应用程序的安装包应确保提供正确的卸载支持。 |
如果使用安装程序安装应用程序,则无需创建单独的卸载程序。 可以创作一个安装包,使安装程序能够安装、卸载和修复应用程序。 请参阅 Windows Installer 概述、将应用程序组织为组件、标准操作、关于标准操作、使用标准操作、标准操作参考、安装应用程序、MsiInstallProduct、INSTALL 操作。 |
3.1 在 Windows 2000 上,不要尝试替换受“Windows 文件保护”保护的文件。 |
在 Windows 2000 上安装基本系统文件时,Windows Installer 遵循 Windows 文件保护 (WFP)。 Windows Installer 从不尝试安装或替换受保护的文件。 如果应用程序的无人参与安装修改了受保护的系统文件,WFP 会将该文件还原为经过验证的文件版本。 有关详细信息,请参阅使用 Windows Installer 和 Windows 资源保护。 |
3.2 编写新的可再发行组件的作者必须使用并行共享技术,以便其组件可以安装到应用程序目录中。 |
Windows Installer 包的作者可以指定安装程序将应用程序的共享文件(通常为共享 DLL)复制到应用程序的文件夹中,而不是复制到共享位置。 之后,这组专用文件 (DLL) 仅供应用程序使用。 请参阅独立组件。 |
3.3 对于 Windows 2000 和 Windows 98 Second Edition,应用程序依赖的任何并行 DLL 都必须安装到应用程序目录中: |
Windows Installer 包的作者可以指定安装程序将应用程序的共享文件(通常为共享 DLL)复制到应用程序的文件夹中,而不是复制到共享位置。 之后,这组专用文件 (DLL) 仅供应用程序使用。 请参阅独立组件或独立组件的安装。 |
4.3 如果访问被拒绝,应用程序应适当降级。 |
此要求的目的是确保如果用户被拒绝访问资源,应用程序会以维护安全环境的方式失败。 Windows Installer 仅在安装期间处理权限。 应用程序必须在运行时处理权限。 安装程序可以在初始化时将某些属性设置为用户的权限级别或系统策略指定的级别。 然后,可以创作 Windows Installer 包,以便安装程序在安装开始之前检查用户的访问权限。 可以创作安装包,以便安装程序确定是否有足够的磁盘空间。 如果为应用程序包创作用户界面 (UI),它可以向磁盘空间不足的用户显示选项。 如果安装失败,安装程序可以切换到其回滚模式,并自动还原计算机的原始状态。 有关详细信息,请参阅 Windows Installer 概述、复原能力、源复原能力、Privileged 属性、AdminUser 属性、系统策略、InstallValidate 操作、文件成本计算、DiskCost 对话框、OutOfDiskSpace 属性、OutOfNoRbDiskSpace 属性、AllocateRegistrySpace 操作、VolumeCostList 控件、回滚、安装机制、PROMPTROLLBACKCOST 属性、DISABLEROLLBACK 属性、EnableRollback ControlEvent。 |
4.5 应用程序应遵循系统级组策略设置。 |
Windows Installer 可以遵循与安装相关的策略。 有关详细信息,请参阅系统策略。 |
7.1 升级到 Microsoft Windows 2000 Professional 后,应用程序应继续正常运行,而无需重新安装 |
安装程序有一个组件属性,可以帮助准备将应用程序迁移到 Windows 2000。 有关详细信息,请参阅使用可传递组件。 |