Сообщение "Возможно, эта программа не установлена правильно" в Windows 7 RC
У меня есть программа установки, которая отлично работает под NT 5.x, Vista и Windows 7. Она содержит соответствующий манифест для UAC на NT 6.x.
Но начиная с Windows 7 RC, каждый раз, когда программа установки закрывается, Windows выдает ошибочное сообщение "Эта программа может быть неправильно установлена", даже если программа правильно установила без каких-либо проблем. Я никогда не получал эти ложные сообщения в Vista или в бета-версии Windows 7.
Я отправил отчет об ошибке в Microsoft, но не получил ответа. Я думал, что это может быть просто сбой в Windows 7 RC, но проблема все еще существует при новой установке одной из самых последних сборников RTM-escrow, которые были пропущены. У Microsoft нет никакой документации по этому поводу - даже не намек на то, что могло бы вызвать его.
Еще больше разочаровывает то, что я получаю сообщение "Эта программа, возможно, не была установлена правильно", даже если я отменил установку на самом первом экране "Вы обязательно убедитесь, что вы хотите продолжить" перед любой установкой код (создание временного каталога, извлечение файлов, копирование, реестр и т.д.) выполняется.
Кто-нибудь понял это?
Ответы
Ответ 1
Хорошо, чтобы ответить на мой собственный вопрос, я нашел способ решить эту проблему. Я заметил, что в журнале изменений WinRAR указано, что самопроизводитель WinRAR также страдал от одной и той же проблемы и что он был решен. Поэтому я загрузил последнюю версию WinRAR и бросил ее в дизассемблер вместе с более ранней версией, ища новые вызовы API и т.д. Короче говоря, получается, что все, что было сделано, это добавить в манифест:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
В некоторых ссылках на строки появились некоторые документы: по-видимому, это нечто новое, что было добавлено в Windows 7, и что документация для него была создана 20 мая. Это не помогло Microsoft не ссылаться на эту с любой из их страниц документации Win7, тем более, что это заметно. Вздох
Изменить: Это плохо документировано на MSDN здесь.
Ответ 2
Я столкнулся с тем же сообщением об ошибке при запуске нового приложения на основе Qt. Те же симптомы - получите это "полезное" сообщение после закрытия .exe, независимо от того, что сделала программа.
Теперь у меня есть различные проекты приложений qt, все они построены точно так же. И никто из других этого не делает.
Наконец-то я понял, что эта ошибка была вызвана исключительно тем, что я назвал этот конкретный проект "установщиком". Я закончил с бинарным "installer.exe", и это, без сомнения, имело бы название проекта, встроенное в него в другом месте (без вникания в файл проекта, созданный qmake, не совсем точно).
Интересным является то, что вы можете столкнуться с этой проблемой, просто имея проект под названием "установщик" и ничего больше.
Ответ 3
Вы бросили Application Compatibility Toolkit в своем установщике?
У меня никогда не было причин иметь дело с этим раньше, но это похоже на то, для чего он предназначен.