更新:检查是否有关于部署的管理员文档 - 或给他们的支持部门打电话。此类文档中通常包含有关如何最好地部署软件的提示或建议。它可以像设置一些 PUBLIC 属性一样简单:
注意!不是实际参数,只是一个示例,请查看文档:
msiexec.exe /i YourPackage.msi ENABLECALLPICKUP=1 ENABLEHUNTGROUP=1
以下答案试图详细解释 MSI 安装的自定义 - PUBLIC PROPERTIES、transforms等:如何更好地使用 MSI 文件。
完成它:如果没有实际的 MSI,总是很难说最好的方法是什么。一种更简单的方法——在我看来,如果你正在做一个公司包——是为你的包制作一个管理员图像。从技术上讲,这不是最好的方法,但它通常可以完成工作:
msiexec.exe /a YourPackage.msi
然后以交互方式为您的设置选择一个提取文件夹。或者,如果没有 GUI,请在提取命令中指定输出路径:
msiexec.exe /a YourPackage.msi TARGETDIR=C:\MyExtractedFiles
如果 MSI 包含在 EXE 文件中,请尝试这个相当混乱的答案:从 EXE 中提取 MSI。
现在您可以在提取的文件中找到有问题的 XML,并且可以“修复”文件的内容——前提是它确实存在于磁盘上。然后,您从您创建的管理映像在您的工作站上运行安装 - 通过 SCCM 或其他一些部署机制。
生成的 XML:提取中也可能没有 XML 文件,但它是由自定义操作或第三方 XML 写入机制(例如来自 WiX、Installshield、Advanced Installer 等)编写的。如果没有 MSI,我无法判断。然后,您需要更新 MSI 中的自定义表以设置相关设置,或者在供应商自行开发的自定义操作的情况下,对使用您自己的自定义操作编写的文件进行后处理。这可能需要相当长的时间。您也许可以使用 WiX 进行后期处理,但这并不是完全可以调整的。
升级警告:当您“修复”要安装的 XML 文件时,您应该知道在升级时覆盖它并不容易。从技术上讲,将 XML 文件条目转换为 WiX XML 更新语句(或其他部署工具中的等效语句)更好,因为这使您可以准确地“查明”文件中的更改,而不必担心文件覆盖情况(这可能很难解决)。本质上:具有不同修改和更改日期的文件默认不会被 Windows Installer 覆盖(这是一个很长的故事,需要处理很多惊喜)。
Major Upgrade Only:如果您使用主要升级来升级您的应用程序,并且在安装新版本之前完全卸载旧版本(在RemoveExistingProducts
中的InstallExecuteSequence
),那么您通常不会看到任何问题用新设置覆盖设置作为更改在卸载时被删除 - 删除,并且默认内容是全新安装的(还原,而不是覆盖) - 这实际上是人们不期望这种行为时的常见问题。安装后用户是否会更改配置文件 - 以您想要保留的方式?
有关管理安装的更多信息: