Открытие CabInfo с путем, содержащим пробелы - PullRequest
1 голос
/ 12 января 2012

Я пытаюсь открыть файл * .cab (используемый установщиком Microsoft), используя

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

Класс CabInfo является частью набора инструментов Windows Installer XML (WiX) (см. http://codesupport.wordpress.com/tag/microsoft-deployment-compression-cab-dll/)

Однако CabInfo не примет путь к файлу, содержащий пробелы, даже если он правильно экранирован, как показано выше.

Мне было интересно, есть ли возможность передать имя файла с пробелами в CabInfo.

Ответы [ 2 ]

0 голосов
/ 12 января 2012

Мне почти не хочется это предлагать, но вы пробовали использовать имя файла совместимости 8.3? Например:

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

К сожалению, если этот механизм работает, я не думаю, что есть свойство ShortName на FileInfo. Я думаю, вам нужно будет вызвать функцию GetShortPathName в kernel32.dll.

0 голосов
/ 12 января 2012

Я не знаю, возможно ли это, но я вижу 2 варианта решения проблемы:

1) .cab файлы часто сжимаются в формате zip.Вы можете открыть его, используя библиотеку, например zlib.

2) если файл не слишком большой, вы можете скопировать его в папку, например "c: \ temp", прежде чем открывать его.

Я надеюсь, что это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...