我们有一个CustomTable,我们在创建msi时添加它们。此自定义表包含一些二进制数据(xml文件),当msi上载到我们的部署服务器时,我们的部署软件会读取这些数据。
我们现在要求支持部署msp文件。这意味着如果用户将msp文件上传到我们的部署服务器,我们的软件应该仍然能够读取CustomTable中的二进制数据。但是我一直无法找到确保我们创建的msp文件包含相同CustomTable的方法。
我知道msp包含更新的xml,因为我使用ORCA来查看更新的表和文件。不幸的是,我似乎无法以编程方式从我们的CustomTable中读取数据,因为它不会(显然)存在于补丁中。有谁知道从msp文件访问CustomTable的方法?
谢谢 - 如果需要澄清,请告诉我!
答案 0 :(得分:0)
补丁(msp)应该只包含对以前MSI包的更改。如果您不在更新版本的MSI包中更改自定义表,则修补程序中将不会提及它。这是预期的。
当应用补丁时,它会更改初始MSI包(实际上是修补它)并运行重新安装。这意味着如果您的自定义操作读取自定义表未明确安排在重新安装时不运行,那么它将运行并且它将找到自定义表。
答案 1 :(得分:0)
好的,所以最终解决了我的问题。
由于我们没有原始的msi,我们可以在临时目录中创建一个空白的msi,然后使用ApplyTransform在其上面应用msp。假设我们创建了预期的表,并用虚拟数据填充它(幸运的是我们事先知道这个表中预期的行),在我们的虚拟msi上应用补丁的过程允许我们成功查询_Storages表并访问包含新xml的更新流。然后可以在我们的msp上传期间处理它。
不漂亮,但有效。