Используют ли управляемые ЦС Streamwriter по-другому?

Кто-нибудь сталкивался с ошибкой, из-за которой временный путь извлечения пользовательского действия добавляется при создании файла?

У меня есть управляемое настраиваемое действие (64-разрядная C# DLL с использованием Microsoft.Deployment.WindowsInstaller), которое выполняет некоторые проверки системы. Он записывает файл ключ=значение в стиле inf в отложенном ЦС. На самом деле здесь нет ничего особенного, просто File.Create(FullPathToFile).

Но когда я пытаюсь записать файл, по какой-то причине включается временный каталог, в который извлекается ЦС.

MSI (s) (3C:E4) [10:19:36:712]: Здравствуйте, я ваш 64-битный сервер настраиваемых действий с повышенными правами.

SFXCA: Извлечение пользовательского действия во временный каталог: C:\Windows\Installer\MSIC451.tmp-\

SFXCA: привязка к CLR версии v2.0.50727

System.IO.DirectoryNotFoundException: не удалось найти часть пути 'C:\Windows Installer\MSIC451.tmp-*C:\Program Files\Path, куда должен быть записан файл свойств *'. at System.IO.__Error.WinIOError(Int32 errorCode, String mayFullPath)
at System.IO.FileStream.Init(путь String, режим FileMode, доступ к FileAccess, права Int32, логическое значение useRights, общий доступ к FileShare, размер буфера Int32, параметры FileOptions , SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
в .....

Есть ли что-то странное в том, как управляемый ЦС использует запись потока?


person Randolph    schedule 19.07.2011    source источник


Ответы (1)


Наконец-то я понял, что переменная, которую я пытался использовать, включала свойство, например: [TARGETDIR]\otherstuff. Когда я использовал переменную в качестве пути к файлу, я ожидал путь C:\Program Files\productname\otherstuff\mystuff. Но не собственность. При использовании с некоторыми операциями (в данном случае StreamWriter) свойство не разрешилось должным образом, что дало мне ошибку, указанную выше.

После того, как я понял, что часть пути была фактически разрешена из свойства, я смог внести изменения, чтобы разрешить нужный мне путь из свойства, и все работает, как и ожидалось.

session.Format(Property) or session[Property]

person Randolph    schedule 26.07.2011