Проект веб-установки не может установить сайт динамических данных: «Установщик был прерван» - PullRequest
4 голосов
/ 21 января 2011

Последняя фаза установщика завершается с этим сообщением:

Установка не завершена

Программа установки была прервана до установки [проекта]. Вам нужно перезапустить установщик, чтобы повторить попытку.

Запуск msiexec /i installer.msi /l*vx setup.log показывает следующие записи в журнале настройки:

INFO   : [...] [ApplyWebFolderProperties]: Getting web folder property token...
INFO   : [...] [ApplyWebFolderProperties]: Token is '/LM/W3SVC/1/ROOT/ProjectDir/DynamicData/Filters'.
INFO   : [...] [ApplyWebFolderProperties]: Getting METADATA_HANDLE for the directory '/LM/W3SVC/1/ROOT/ProjectDir/DynamicData/Filters'.
ERROR  : [...] [ApplyWebFolderProperties]: FAILED:  -2147024893
ERROR  : [...] [ApplyWebFolderProperties]: FAILED:  -2147024893
ERROR  : [...] [ApplyWebFolderProperties]: Custom Action failed with code: '3'
ERROR  : [...] [ApplyWebFolderProperties]: Custom Action failed with code: '3'
INFO   : [...] [ApplyWebFolderProperties]: Custom Action completed with return code: '3'

У того же веб-приложения раньше не было проблем с установкой веб-проекта. Проблема началась после обновления веб-приложения с .NET 3.5 SP1 до .NET 4.0.

1 Ответ

2 голосов
/ 21 января 2011

Эта запись в блоге указывает на проблему:

Что заставило меня задуматься, у меня есть подпапка с именем filters . изменения ничего, кроме переименования фильтров подпапка заставила это закончить должным образом. я при условии, что у вас может быть то же самое проблемы с папками с именем apppools, info или 1.

(Акцент мой)

К сожалению, Фильтры - это жестко заданное имя папки в динамических данных. Если вы посмотрите на FilterFactory , то, похоже, нет способа переопределить это значение, так как свойство FilterFactory MetaModel не помечено как виртуальное. Если мы не можем изменить имя папки, тогда мы должны взглянуть на исправление установщика ...

Ошибка установщика вызывается пользовательским действием ApplyWebFolderProperties . Это действие не встроено в установщик Windows - оно добавлено проектом веб-установки. Это полезно, потому что это означает, что мы можем удалить его с помощью WiRunSQL.vbs :

cscript WiRunSQL.vbs installer.msi "DELETE FROM CustomAction WHERE Action='WEBCA_ApplyWebFolderProperties'" 

Обратите внимание, что фактическое имя ApplyWebFolderProperties равно WEBCA_ApplyWebFolderProperties. Видя, как действие нигде не документировано, будьте бдительны. Хотя это не кажется слишком важным.

Чтобы автоматизировать обходной путь, вы можете добавить команду в PostBuildEvent проекта установки следующим образом:

cscript.exe "$(ProjectDir)..\WiRunSQL.vbs" "$(BuiltOuputPath)" "DELETE FROM CustomAction WHERE Action='WEBCA_ApplyWebFolderProperties'"

Если кто-нибудь знает лучший способ установить папку с именем Фильтры , я бы хотел это услышать.

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