使用包含空白的路径打开CabInfo

本文关键字:CabInfo 路径 包含 空白 | 更新日期: 2023-09-27 18:20:02

我正试图使用打开*.cab文件(由Microsoft安装程序使用)

  String cabFileName = @"C:'Programme und Einstellungen'somefolder'mycab.cab";
  CabInfo cab = new CabInfo(cabFileName);

CabInfo类是Windows安装程序XML(WiX)工具集的一部分(参见。http://codesupport.wordpress.com/tag/microsoft-deployment-compression-cab-dll/)

但是,CabInfo不会接受包含空格的文件路径,即使它是如上所示正确转义的。

我想知道是否有可能将包含空格的文件名传递给CabInfo。

使用包含空白的路径打开CabInfo

我几乎不想建议这样做,但你尝试过8.3兼容的文件名吗?例如:

CabInfo cab = new CabInfo(@"C:'PROGRA~1'somefolder'mycab.cab");

不幸的是,如果这个机制有效,我认为FileInfo上没有ShortName属性。我认为您需要PInvoke kernel32.dll中的GetShortPathName函数。

我不知道这是否可能,但我看到了解决问题的两种可能性:

1) .cab文件通常使用zip文件格式进行压缩。您可以使用类似zlib的库打开它。

2) 如果文件不是太大,可以在打开之前将其复制到类似"c:''temp"的文件夹中。

我希望它能帮助你。