gpt4 book ai didi

perl - 在perl中读取msi文件

转载 作者:行者123 更新时间:2023-12-02 04:32:30 27 4
gpt4 key购买 nike

我想读取一个 msi 文件。我使用 Win32::MSI::HighLevel 库,但这个库一直向我发送 undef。

我的代码:

use strict;
use warnings FATAL => 'all';
use Win32::MSI::DB qw(Win32::MSI::DB::MSIDBOPEN_READONLY);
use Win32::MSI::HighLevel;
use Data::Dumper;
my $msi = Win32::MSI::HighLevel->new (-file => "Firefox.msi", -mode => $Win32::MSI::DB::MSIDBOPEN_READONLY) or die "error $!";
my $productCode = $msi->getProductCode;
my $product = $msi->getProduct;

print Dumper $productCode;

$product 返回 ': - '$productCode 是 undef 。

我在Windows的文件属性里查看了msi文件的信息,确认信息在里面。我已经用另一个 msi 文件尝试了代码,但我遇到了同样的问题。

最佳答案

MSI 文件的 ProductCode 位于 MSI 文件内名为 Properties 的表中,该表是一个关系数据库。它不是文件属性。这篇文章应该有所帮助:

PowerShell: Get the MSI product code out of a MSI file without installing?

因为它概述了需要进行的各种调用,这些调用基本上是打开数据库,使用 SQL 查询“”SELECT Value FROM Property WHERE Property = 'ProductCode' 等执行 OpenView,类似此处:

https://codereview.stackexchange.com/questions/143304/get-productcode-from-msi-file-using-dtf-in-c

关于perl - 在perl中读取msi文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47276171/

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