У меня есть старое приложение VB6, которое я все еще пытаюсь поддерживать. Несколько пользователей сообщили о странных катастрофических отказах при запущении приложения в Vista или Windows 7. Файлы журнала ничего не показывают после одного из этих катастрофических отказов, но клиенты сообщают, что в сообщении об ошибке был сказан "OLE что-то...", если они видели что-нибудь вообще.
Я никогда не мог воспроизвести эти катастрофические отказы при запущении программы на моих собственных полях Vista или Windows 7, таким образом, у меня нет по существу информации о том, какова проблема.
Мое подозрение - то, что это - проблема с их версиями одного или нескольких из многочисленного миллиарда DLLs, от которого приложение VB6 зависит. Приложение также использует lame_enc.dll, который представляет еще несколько зависимостей.
Я предполагаю, что это - типичная проблема с приложениями VB6 (хотя возможно, что я просто высосал как программист 10 лет назад). Есть ли некоторый волшебный installer/updater там, который удостоверяется, что все зависимости VB6 - то, чем они должны быть, чтобы приложение VB6 функционировало правильно?
Один из вариантов - обратиться в техническую поддержку Microsoft. Среда выполнения VB6 полностью поддерживается в Windows 7. Возможно, вам придется заплатить за "инцидент поддержки": или это может быть бесплатно, например, если у вас есть подписка MSDN (хорошая идея получить ее).
Если Режим совместимости
не работает, существует также Режим XP . Это виртуализирует всю среду виртуальной машины XP, но также позволяет ей взаимодействовать с ОС хоста. Однако он доступен только для Windows 7.
Попросите пользователя запустить приложение в режиме совместимости с XP . Просто перетащите ярлык на рабочий стол, щелкните правой кнопкой мыши, «Свойства». Затем на вкладке «Совместимость» установите для него значение «работать в режиме совместимости для:» и выберите «Windows XP (Service Pack 3)». А также «отключить масштабирование дисплея при высоких настройках DPI». Посмотрим, поможет ли это. Просто могло бы.
Я тоже проголосую за XPMode.
Однако, если у вас все еще есть проблемы, Dependency Walker - хороший бесплатный инструмент, который сканирует exe / dll / ocx и строит древовидную диаграмму всех зависимых модулей / dll. Даже без этой проблемы это полезно при устранении проблем с установкой.
http://www.dependencywalker.com/
Кроме того, в прошлом у нас было несколько проблем с элементами, которые записывают реестр, где у пользователя не было надлежащих прав безопасности, что вызывало аналогичные проблемы. Вы можете проверить код этих функций, если они у вас есть.
В целом у нас было странное поведение с некоторыми клиентами, которые пытались запустить наше приложение в Windows 7. В одном случае главная панель инструментов приложения (стандартный элемент управления MSComctlLib.Toolbar
) была полностью пустой. (ни один из значков или разделителей не появился). Мы были озадачены. Программа не вылетела, значков просто не было. Ничего в журналах ошибок приложения, ничего в журнале событий Windows. Мы даже убедились, что приложение настроено для работы в режиме совместимости с Windows XP, но без кубиков. Насколько нам известно, были установлены и зарегистрированы правильные библиотеки DLL, и с тех пор мы запускали одно и то же приложение в той же версии Windows 7 без каких-либо проблем.
По иронии судьбы, незадолго до этого мы решили официально поддерживать Windows 7, в то же время заявив, что официально не будем поддерживать Vista (хотя некоторые клиенты запускают приложение в Vista без каких-либо проблем). Поначалу это может показаться странным решением, но есть две веские причины, по которым это имеет смысл:
На большинстве новых компьютеров будет предустановлена Windows 7, и большинство клиентов, которые пропустили обновление до Vista из-за всего окружающего FUD они очень заинтересованы в обновлении с XP до Windows 7.
Windows 7 поддерживает XP Mode , который позволяет запускать приложения на виртуальной машине под управлением Windows XP SP3. Некоторые из наших клиентов пошли по этому пути, и ни один из них не сообщил о каких-либо проблемах с запуском нашего приложения таким образом.Поскольку вы запускаете свое приложение в реальной среде Windows XP, вероятность того, что что-то пойдет не так, намного меньше.