2012-09-24 45 views
0

我们有一个CustomTable,它在创建时添加到我们的msi中。此自定义表格包含我们的部署软件在将msi上传到部署服务器时读取的一些二进制数据(xml文件)。要包含在补丁msp文件中的自定义表

我们现在需要支持msp文件的部署。这意味着如果用户将msp文件上传到我们的部署服务器,我们的软件仍应能够读取我们的CustomTable中的二进制数据。然而,我一直无法找到一种方法来确保我们创建的msp文件包含相同的CustomTable。

我知道msp包含更新的xml,因为我使用ORCA来查看更新的表和文件。不幸的是,我似乎无法以编程方式从我们的CustomTable中读取数据,因为它没有(显然)在补丁中存在。有谁知道从msp文件访问CustomTable的方法吗?

谢谢 - 如果需要澄清,请告诉我!

回答

0

好的,所以最后有一个解决我的问题。

由于我们没有原始msi,因此我们可以在临时目录中创建一个空msi,然后使用ApplyTransform将msp应用于此。提供我们创建的预期表格,并填充虚拟数据(幸运的是,我们事先知道该表格中预计有哪些行),在我们的虚拟msi顶部应用修补程序的过程允许我们成功查询_Storages表格并访问更新的流包含新的xml。这可以在我们的msp上传过程中进行处理。

不漂亮,但它的作品。

0

补丁(msp)应该只包含对以前MSI软件包的更改。如果您没有在MSI软件包的较新版本中更改自定义表格,则该修补程序中不会提及它。这是预料之中的。

应用修补程序时,它会更改最初的MSI软件包(实际上会修补它)并运行重新安装。这意味着,如果读取自定义表的自定义操作未明确计划为不在重新安装时运行,那么它将运行并找到自定义表。

+0

感谢您的回复 - 这很好地突出了我们的问题 - 自定义表格不会被自定义操作读取,我们也不会在修补程序正在执行/应用时尝试读取自定义表格中的数据。当补丁上传到我们的部署服务器时,我们尝试读取这些信息 - 当我们只处理msi时,这很好地工作,但现在我们需要将此扩展到与msp一起工作 –