#c# #wix
#c# #wix
Вопрос:
У меня есть пользовательское действие C #, которое загружает XML-документ и вносит некоторые изменения в его содержимое.
Когда я запускаю это на своей 32-разрядной рабочей станции Windows 7, новый XML-документ не создается. Когда я тестирую программу установки на виртуальной машине Windows Server 2003, центр сертификации работает должным образом и сохраняет XML-документ в каталоге установки.
string configFile = Path.Combine(configFileSaveLocation, targetName);
StreamWriter writer = new StreamWriter(configFile);
doc.Save(writer);
writer.Close();
где ‘doc’ — это XML-документ.
Никакие исключения не перехватываются, если я помещаю вышеупомянутые 4 строки в блок try / catch.
Есть мысли относительно того, чего мне не хватает?
Комментарии:
1. Вероятно, это проблема с разрешениями. Windows 7 оснащена UAC. Вы уверены, что нет исключения? Кроме того, вы должны попытаться окружить StreamWriter инструкцией «using».
2. Это также может быть сохранение файла в неожиданном месте. Как определяется configFileSaveLocation?
3. Почему вы не используете стандартные элементы XmlConfig или XmlFile? Они решают большинство таких проблем под капотом…
4. Вы пытались установить для Impersonate значение «нет»?
5. Моей первой мыслью также было, что это проблема пользовательского интерфейса. Однако, когда я добавил try / catch и запустил его в отладчике, никаких исключений безопасности не было выдано.
Ответ №1:
Поскольку Impersonate =»No» сделал свое дело, это явно проблема с разрешениями. Но это само по себе оставляет отсутствие исключения необъяснимым. Windows Vista и более поздние версии перенаправляют некоторые виды некорректных обращений к файлам на %LocalAppData%VirtualStoreProgram Files*
. Бьюсь об заклад, если вы посмотрите туда вместо реального Program Files*
, вы увидите свой конфигурационный файл.
Исследуя это, я только что узнал один простой способ добраться туда — заглянуть в реальную папку и нажать Compatibility files
кнопку в проводнике; кнопка появляется только тогда, когда это необходимо. Подробности см. в Сценарии 2, посвященном распространенным проблемам виртуализации файлов и реестра в Windows Vista или в Windows 7.
Комментарии:
1. Отлично! Точно так, как вы описали.