0

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

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

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

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

4

2 回答 2

0

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

应用补丁后,它会更改初始 MSI 软件包(实际上是对其进行修补)并运行重新安装。这意味着如果您读取自定义表的自定义操作未明确安排在重新安装时不运行,那么它将运行并找到自定义表。

于 2012-09-25T06:00:11.183 回答
0

好的,所以终于解决了我的问题。

由于我们没有原始 msi,我们可以在临时目录中创建一个空白 msi,然后使用 ApplyTransform 在此之上应用 msp。假设我们创建了预期的表,并用虚拟数据填充它(幸运的是,我们事先知道该表中预期的行),在我们的虚拟 msi 上应用补丁的过程允许我们成功查询 _Storages 表并访问包含新 xml 的更新流。然后可以在我们的 msp 上传期间进行处理。

不漂亮,但它有效。

于 2012-10-10T15:55:49.123 回答