Как перераспределить Crystal Reports для VS2005 в Vista? - PullRequest
2 голосов
/ 19 мая 2009

У меня есть приложение WinForms, созданное с использованием Visual Studio 2005, включая отчеты Crystal Reports, поставляемые с VS2005, для запуска и просмотра отчетов. Мой установщик использует модуль слияния CrystalDecisionsRedist2005_x86 для установки Crystal. Это все работает хорошо, пока я не попробую установить на Vista, когда я получаю ошибки при регистрации DLL Crystal. Кажется, это хорошо известная проблема, о чем сообщалось на форумах, таких как здесь , здесь и здесь , но, как и в случае с этими вещами, общепринятого решения не существует что я могу найти, и бизнес-объекты, перемещающие свои сайты, тоже не помогают. (Прекрасный пример проблемы, когда требуется стековерсок).

Так как же развернуть приложения Crystal Reports для VS2005 в Vista?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ :

Ошибки Vista, регистрируемые в журнале событий, появляются в виде пар:

Сбой генерации контекста активации для "C: \ Program Files \ Common Файлы \ Бизнес Объекты \ 2,7 \ Bin \ ExportModeller.dll» Зависимая сборка Microsoft.VC80.ATL, processorArchictecture = "x86" .... не найден. Пожалуйста, используйте sxstrace.exe для подробной диагностики.

1021 * тогда *

Продукт: Ошибка 1904. Модуль "C: \ Program Files \ Common" Файлы \ Бизнес Объекты \ 2,7 \ Bin \ ExportModeller.dll» не удалось зарегистрироваться. HRESULT -217010895. Обратитесь в службу поддержки.

и т. Д. Для различных других библиотек.

Мой установщик включает в себя модули слияния для ATL, но я думаю, что они не применяются в первую очередь. В моем Wise Installer Edition нет способа указать, какие модули слияния применяются первыми.

Вместо этого я попытался установить модуль слияния Crystal Reports X1, напрасно надеясь, что он будет обратно совместим с 10. Но хотя установка работает нормально, я получаю исключение при попытке запустить отчет со ссылкой ошибка, потому что не может найти соответствующую сборку. Не слишком удивительно.

Я также пытался использовать модуль слияния CrystalReports10_NET_EmbeddedReporting.msm, доступный на сайте загрузки программного обеспечения поддержки Business Objects (файл называется «Модули слияния для CR 10 .NET Deployments -En»)

Я продолжу свой список вещей, которые можно попробовать из разных тем, но мне бы понравилось, если бы у кого-то был «ответ».

спасибо.

ТЕКУЩЕЕ РЕШЕНИЕ

Мой текущий метод / обходной путь заключается в установке Microsoft Visual C ++ 2005 SP1 Распространяемый пакет (x86) на компьютере с Vista до установки моего MSI. Это позволяет моему обычному MSI отлично работать на Vista, но не идеально, так как я хочу распространять только один exe.

Я также поднимал этот вопрос на форумах SAP / CrystalReports здесь .

ДАЖЕ БОЛЬШЕ ИНФОРМАЦИИ

В примечаниях к выпуску для CR для .NET SP1 отмечается, что эта проблема существовала и теперь решена:

ADAPT00738607

Описание: Когда установка настроенного проекта установки с Crystal Reports для визуального Модули слияния Studio 2005 (.msm) включены Vista, некоторые компоненты COM не в состоянии регистр. например Модуль C: \ Program Файлы \ Общие файлы \ Бизнес Объекты \ 2.7 \ Bin \ ExportModeller.dll не удалось зарегистрироваться. HRESULT -2147010895. Обратитесь в службу поддержки. "Если вы запустите setup.exe снова и выберите ремонт, установка будет продолжаться без каких-либо ошибка, и компонент может быть зарегистрировано.

Новое поведение: эта проблема решено

Однако я до сих пор не нашел обновленных модулей слияния, поэтому мне не ясно, где была решена эта проблема. Предложенный обходной путь для исправления установки стоит рассмотреть, если вам не нужно устанавливать пакет C ++ отдельно.

1 Ответ

1 голос
/ 10 декабря 2009

Я столкнулся с этой проблемой сегодня. Похоже, должен быть более простой способ установить файл MSI с необходимыми условиями.

Googling дает следующий блог , который объясняет проблему. В нем перечислены следующие решения:

  1. Установите среды выполнения VC 8.0 с помощью распространяемого пакета через средство настройки
  2. Установка личных копий файлов времени выполнения VC 8.0.
  3. Статическая ссылка на среды выполнения VC 8.0 при сборке ваших двоичных файлов, чтобы они не зависели от глобальных сборок
  4. Использовать пользовательское действие или пользовательское действие, запланированное после InstallFinalize.
  5. Преобразуйте информацию о самостоятельной регистрации в стандартную авторизацию MSI и прекратите использовать саморегистрацию.

Я не мог использовать вариант 1, потому что хотел один файл MSI.
Я не мог использовать варианты 3 или 5, так как это сторонняя библиотека.
Я не хотел использовать вариант 2, поскольку не хотел иметь дело с личными копиями файлов.

Это оставило вариант 4. Это не лучший способ, но он сработал для меня. Я отредактировал модуль слияния CrystalDecisionsRedist2005_x86 (используя InstallShield) и удалил записи в таблице SelfReg. Затем я создал специальное действие, запланированное в Commit, чтобы зарегистрировать удаленные файлы.

...