DIRCA_CHECKFX Возвращаемое значение 3 - Проект развертывания VS 2013

У меня страшная проблема с моей попыткой установки MSI:

MSI (c) (98:B0) [18:01:22:818]: Invoking remote custom action. DLL: C:\DOCUME~1\sspencer\LOCALS~1\Temp\1\MSI19.tmp, Entrypoint: CheckFX
MSI (c) (98:FC) [18:01:22:833]: Cloaking enabled.
MSI (c) (98:FC) [18:01:22:833]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (98:FC) [18:01:22:833]: Connected to service for CA interface.
Action ended 18:01:22: DIRCA_CheckFX. Return value 3.

После нескольких копаний это фактически указывает на то, что DLL не удалось загрузить напрямую, серверу CA не удалось подключиться и начать попадание в точки входа DLL.

Я использовал orca и 7zip для извлечения пользовательского действия для DIRCA_CheckFX, которое вставляется Visual Studio при сборке проекта развертывания. Я взял библиотеку DLL и затем выполнил Dependency Walker в хост-системе (Server 2003 R2), которая выдала ошибку:

Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.

Я перекомпилировал систему с помощью компилятора VS 2010, извлек DLL и запустил обходчик зависимостей, который не вызывал ту же ошибку. Т.е. компиляция VS 2010 работает, компиляция VS 2013 завершается неудачно, так как включенная DLL не загружается в целевой среде.

Мой вопрос заключается в том, как устранить неполадки, в которых отсутствуют библиотеки DLL, чтобы устранить эту ошибку, о которой сообщает Dependency Walker.

4 ответа

Решение

Должна быть установлена ​​VS 2010, из которой вы можете получить действительный файл "dpca.dll".

  1. Закрыть Visual Studio 2013
  2. Скопировать файл с заменой dpca.dll от C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\Deployment в C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\VSI\bin,
  3. Открытый проект
  4. перестраивать

В предварительном просмотре воскресения.vdproj используются библиотеки DLL, которые не поддерживают Windows XP или Server 2003. Microsoft опубликовала обновление, которое могло исправить эту ошибку.

Вот что я сделал, чтобы обойти эту проблему для 32-разрядного проекта развертывания.

  1. Создайте проект установки в VS2010 один раз. Этот пакет не преследуется проблемой, но я не хотел продолжать сборку в другой версии VS.

  2. Откройте полученный MSI-файл с помощью Orca, выберите двоичную таблицу и экспортируйте содержимое MSVBDPCADLL в файл.

  3. Теперь после сборки в VS2013 используйте Orca для импорта экспортированных данных в Binary\MSVBDPCADLL, чтобы исправить пакет.

Я должен сделать то же самое с 64-битным проектом, но в этом случае он должен импортировать правильный двоичный файл InstallUtil (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtilLib.dll).

Проекты развертывания Visual Studio были настолько ужасными, что Microsoft удалила их из Visual Studio 2012. Разработчики были настолько неосведомлены о том, почему они были ужасны, что они просили и умоляли их вернуться. Умные парни из Microsoft, которые понимают MSI, покинули здание, а люди, которые остались, уступили разработчикам, чтобы они вернулись.

Один из тех действительно умных парней подвел итог этого в твиттере:

Возвращение vdproj: выстрелы в голову, люди или они возвращаются как ходячие.

Я написал статью о своих чувствах: Visual Studio Installer Resurrection

Итак, давайте поговорим о том, как инструмент на этот раз подводит вас. Найдите минутку, чтобы прочитать эту статью, написанную одним из действительно умных, чтобы оставить MSFT:

Zataoca: Пользовательские действия - это (обычно) признание неудачи.

VDRPOJ создал специальное действие, чтобы сделать что-то, что MSI могла сделать изначально, и теперь это не удается. Допустим, вы нашли DLL и исправили ее для работы на вашем компьютере. Что происходит, когда вы отправляете MSI на 1000000 машин? Сколько машин там выйдет из строя? Сколько звонков в службу поддержки вы получите? Сколько твитов вы получите, что ваш продукт отстой?

Проще говоря, я бы переделал ваш установщик, используя лучший инструмент, такой как XML установщика Windows и XML установщика Windows Industrial Strength. Если у вас есть деньги, чтобы потратить InstallShield Professional, это также хороший выбор.

Другие вопросы по тегам