"Nikolay Ponomarenko" ...
Hello, All!
В силу обстоятельств вынуждены мы работать, вкушая все прелести механизма UAC от Microsoft по виртуализации (а по сути запрету)
записи в Program Files.
Много мы с эим получаем проблем, полностью осознавая неправильность подхода. Но
пока работали.
Обновление метаданных у нас делается такой вот командой:
isql.exe -ch WIN1251 -s 3 -q -b -n -i ..\sql-mdo\020\update.sql -u SYSDBA -p masterkey "C:\Program
Files\Morion\MDS3050\2.0\fdb\mdo.fdb" -o "..\log\\meta020error.txt" -m
Все работало, пока не перешли на 2.5.0, для isql.exe которого не срабатывает
эта самая виртуализация.
Причиной оказалось явное указание requestedExecutionLevel в манифесте
<requestedExecutionLevel level="asInvoker">
Что, по документации, отключает эту самую виртуализацию, хотя для вызывающего
приложения она есть.
http://msdn.microsoft.com/en-us/library/bb756929.aspx
А при чём тут вызывающее приложение ? На виртуализацию оно никак не влияет.
И в общем сейчас стою перед диллемой - перевести пользователей c включенным UAC на нормальную работу в ближайшее время не
получится (нужно обеспечить сохранность данных, которые уже завиртуализировались), а обновить их в ближайший релиз нужно.
Похоже что единственным выходом будет включение в дистрибутив патченной isql :-/
а) не держать базу в "Program Files" (правильно), или
б) подсовывать isql'у уже виртуализованный путь (маразм), или
в) взять isql от FB 2.1
--
Хорсун Влад