4

У меня есть устаревшая установка из приложения DotNet 1.1 (с Visual Studio 2003), которое не будет разворачивать файл msflxgrd.ocx при установке FIRST в Windows 7 Если я удалю MSI и снова запустил тот же MSI (и будущие установки на том же ноутбуке), файл msflxgrd.ocx будет развернут. Сначала я подозревал, что это проблема regsvr32, но поскольку нет файла для регистрации, это, скорее всего, проблема с развертыванием. У меня есть права администратора на машинах.OCX-файл не разворачивается из MSI, сгенерированного с помощью Visual Studio 2003, в Windows 7

У меня есть ссылки на журналы MSI here:

ли кто-нибудь может помочь?

Спасибо!

+0

Я попытался прочитать ваши журналы, но у меня не найдена ошибка. Вы меня немного смутили. У вас есть OCX-файл, который является COM-сервером, но вы говорите, что нет файла для регистрации. Файлы OCX всегда должны быть зарегистрированы. ?? –

+0

У меня, кажется, есть эта DLL в моем каталоге SYSWOW64 на Win7SP1. Я потянул его в InstallShield и выполнил операцию Extract COM Data на нем, и, конечно же, он имеет данные COM. ProgID - это MSFlexGridLib.MSFlexGrid.1, а описание - Microsoft FlexGrid Control, версия 6.0. –

+0

Извините, позвольте мне попытаться уточнить. Когда я запускаю установку, на чистой машине ocx-файл НЕ разворачивается из MSI в файловую систему. Я могу искать весь HD, и его там нет. Все остальные файлы присутствуют. Если я удалю, а затем снова запустим SAME MSI, OCX загадочно появится там, где он должен, и все работает. Это помогает? – Sam

ответ

0

Мой предыдущий ответ состоял в том, чтобы объяснить, что случилось. Ответ будет таким, как это исправить.

InstallShield распространяет модуль слияния для этого элемента управления, который содержит версию 6.0.84.18. Однако кажется, что этот модуль слияния является старым и не включает обновление безопасности, выпущенное Microsoft несколько лет назад. Смотрите тему:

Updated Merge Modules for MS08-070 Security Bulletin

В потоке Mike Marino пытался получить обновленные модули слияния с Microsoft, но сказали:

Microsoft не будет предоставлять Merge Modules для них. Они рекомендовали пользователям либо создавать собственные МСМ, либо включать эти файлы в свои собственные MSI.

Так вот что я буду делать. Убедитесь, что msflxgrd.dll - это последняя версия от MS08-070 (6.1.98.14) или новее. Создайте его в своем установщике в каталоге SystemFolder. Отметьте его как Permanentenet = true.Установите атрибут Register в vsdraCOM и установите SharedLegacyFile = true.

Восстановите свой установщик и снова проверьте свой сценарий обновления. Тебе должно быть хорошо.

+0

Большое вам спасибо. Это было именно так. Я думаю, что произошло то, что мне пришлось строить MSI на машине под Windows 7, и у меня была старая версия OCX, которая была у меня при создании на XP, поэтому она испортила установку. Обеспечение того, что у меня была самая новая версия, делает трюк - и имеет смысл. Благодаря! – Sam

0

Из того, что я вижу в журнале 1, машина не так чиста, как вы думаете. FindRelatedProducts находит предыдущую установку вашего продукта и сообщает RemoveExistingProducts, чтобы удалить его перед установкой новой версии.

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

Тот факт, что это сервер OCX COM, является просто совпадением и не имеет отношения к реальной проблеме.

Мне понадобится MSI, который уже установлен, и обновление MSI, чтобы дать вам конкретные исправления.


Начало действия 14:55:44: FindRelatedProducts. MSI (s): (A0: 18) [14: 55: 44: 119]: ИЗМЕНЕНИЕ НЕДВИЖИМОСТИ: добавление ПРЕДЫДУЩЕЙ ОПЕРАЦИИ. Его значение равно '{08D8BF6E-E399-4B8A-8B8D-7DFF68F81131}'. MSI (A0: 18) [14: 55: 44: 119]: Пропускное действие: ERRCA_CANCELNEWERVERSION (условие ложно) MSI (ы) (A0: 18) [14: 55: 44: 119]: Выполнение action: VSDCA_VsdLaunchConditions Действие завершено 14:55:44: FindRelatedProducts. Возвращаемое значение 1.

+0

Очень интересно. Я посмотрел на «чистую» машину и не смог найти никаких доказательств файла msflxgrd.ocx в файловой системе или в регистре. Где еще я могу посмотреть? – Sam

+0

Из того, что я вижу, этот компонент был зарегистрирован для местоположения «C: \ Program Files (x86) \ BainApps \ HCPD2005». Я вижу, что файл на самом деле не существует, потому что MSI не планировала операцию FileRemove. Но он отменил регистрацию (как COM, так и MSI-метабазу) компонента из этого местоположения. Поэтому мне кажется, что продукт был установлен там, и что-то удалило файл. –

+0

Я использую InstallShield и предоставляет модуль слияния для развертывания этого элемента управления. Он имеет версию 6.0.84.18. Соответствует ли это тому, что вы пытаетесь развернуть? –