gpt4 book ai didi

linux - Linux 中如何从 MSI 中获取文件的真实名称(或者,如何读取 MSI 数据库)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:46 26 4
gpt4 key购买 nike

更新:我更改了这个问题的标题以反射(reflect)下面一些答案真正需要的内容。

我希望能够在 Linux 中从 Visual Studio 2010 的 native 部署工具中生成的 MSI 获取特定的可执行文件。但是cabextract得到的名字都是funky:

-rw-r--r-- 1 root wheel     159 Jul 16 17:26 _07DAC52BD05CC8A8D6B2195350CC8C13
-rw-r--r-- 1 root wheel 34304 Oct 29 12:10 _09C75789ECE59A0AC891A85289474E75
-rw-r--r-- 1 root wheel 8704 Oct 29 12:10 _0CB147FD23752DEFAC3B73925E1E38DB
-rw-r--r-- 1 root wheel 766 Oct 29 12:10 _1D0B16C3296C400D9FD4018E77AC0B05
-rw-r--r-- 1 root wheel 10752 Oct 29 12:10 _24792622E94742D68A455C4F1D54D51F
-rw-r--r-- 1 root wheel 159 Oct 29 12:10 _90A663D25084CD22A230CCB8F55A3700
-rw-r--r-- 1 root wheel 12800 Oct 29 12:10 _BC47FBF48B42E5E71C9901188422814A
-rw-r--r-- 1 root wheel 873984 Oct 29 12:10 _EAFFD36EAA914E7F9D3DAC8BA13DFB6A
-rw-r--r-- 1 root wheel 4608 Oct 29 12:10 _F434E52DDE0AB5C2D68CE7A78B0B2477
-rw-r--r-- 1 root wheel 467456 Oct 29 12:10 _F90AF0EB7EEF445A92623132D00191EA
-rw-r--r-- 1 root wheel 421200 Oct 29 12:10 F_CENTRAL_msvcp100_x86.AFA96EB4_FA9F_335C_A7CB_36079407553D
-rw-r--r-- 1 root wheel 773968 Oct 29 12:10 F_CENTRAL_msvcr100_x86.AFA96EB4_FA9F_335C_A7CB_36079407553D

与解决方案的 Release 目录相比,我可以看到我想要的文件 (itragent.exe) 实际上是 _F90AF0EB7EEF445A92623132D00191EA —— 有没有办法在 Linux 中以编程方式得出这个结论?使用 cabextract 还是借助其他实用程序?那里有两个 XML 文本文件,但它们只有 .NET Framework 版本信息,没有其他信息。

或者,有没有办法强制 VS 2010 以正确的名称在 MSI 中归档可执行文件?

最佳答案

有问题,cab 不包含有关文件“真实”名称的信息。但它包含这些文件的顺序。 MSI 文件有表 File,其中每个压缩文件都有 Sequence 编号。该编号应与文件在文件柜中的序号相同。

我认为,您可以打开 MSI,从 FileName 列中获取真实文件名及其 Sequence 编号,然后以某种方式将它们等同于 cab 序列。

有用的链接:Description of CAB Format , information regarding File tableWindows Installer SDK

关于linux - Linux 中如何从 MSI 中获取文件的真实名称(或者,如何读取 MSI 数据库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13123739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com