手动创建MSI补丁(.msp)?

我们的团队最近一直在考虑向用户推出一个小的注册表修复程序来修改一个特定的有问题的密钥。非常简单的东西,只需更新注册表中的1个键/值。 所以目前,我们正在使用Wix为该产品构建.msi安装程序。在研究Wix对生成.msp补丁文件的支持时,似乎创建.msp的唯一方法是稍微复杂的多步骤过程: 获取原始MSI的副本,并编译固定MSI的新副本 编写一个指向两个安装程序的新Wix文件 将Wix文件编译为带有Candle到.psp的.wixobj 在原始安装程序和.psp的快照之前/之后运行Torch / Pyro,或者使用MsiMsp.exe 现在我的问题是,我不能简单地将注册表更改描述为Wix文件并直接将其编译为.msp,而不需要步骤1和4 - 这只需要一个简单的更改就可以付出巨大的努力?     
已邀请:
不是。补丁是两个可安装映像的增量。要生成增量,即使差异非常小,您也需要两个图像。     
是的,还有另一种方法,即使你可能认为它同样复杂: 使用
msiexec /qn /a <msi-file> TARGETDIR=<absolute-path-of-existing-directory>
创建“基本版本”的管理员安装(如果从make文件或其他脚本运行此命令,请在命令前面使用
start /wait
),比如说
%BASEDIR%
重复上述内容,但进入
%UPDDIR%
既然您已在
%UPDDIR%
中解压缩安装,请对.msi文件进行更改,该文件将位于该文件夹的根目录中...您还应该更改版本号... 如果您交换文件,请确保更新哈希表(
MsiFileHash
)或
File
表以获取包含版本信息的文件。 如果你只改变一些注册表值,你应该没有任何... 现在准备一个
.pcp
(补丁创建属性)文件,将
TargetImages
表中的一行指向
%BASEDIR%
中的
.msi
,将
UpgradedImages
中的一行指向
%UPDIR%
中的
.msi
调用
msimsp.exe <pcp-file> -p <absolute-path-to-desired-patch-file>
瞧,你做完了。 现在这是否值得,完全取决于你。 这是我在MSI数据库上运行SQL查询的一些脚本的帮助下进行的,以便查询值或根据需要更新它们。这非常有效,并已被放入GNU make文件中,以构建一大堆MSI,派生的MSI,补丁和虚拟补丁(用于测试)。 这里的技巧是修补解压缩的管理员映像并指示
msimsp.exe
在解压缩的管理映像的未更改版本和更改版本之间创建补丁。总而言之,这符合你“手工”做的要求。 如果需要澄清,请写评论。     
可以使用Orca和Windows Install SDK中的其他工具(现在是Windows SDK的一部分)创建MSP(补丁)和MST(转换)。但是,这个过程可能并不比您使用WiX更容易。 这是我用几分钟谷歌搜索可以找到的最好的解释;我仍然怀疑那里肯定会有更好的东西。但是如果你熟悉Windows Installer格式,那么在你掌握它之前,很容易探索并尝试使用Orca。     

要回复问题请先登录注册