Эта программа могла неправильно установить сообщение в 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 нет никакой документации по этому поводу - даже намека на то, что могло бы это вызвать.

Еще большее разочарование вызывает то, что я получаю это сообщение «Эта программа могла быть установлена ​​неправильно», даже если я отменяю установку на самом первом экране «Вы уверены, что хотите продолжить» перед any кода установки (создание временного каталога, извлечение файлов, копирование, реестр и т. д.) когда-либо запускается.

Кто-нибудь понял это?


person Community    schedule 01.07.2009    source источник
comment
Имеется ли это ниже на ServerFault?   -  person Stephen Darlington    schedule 01.07.2009
comment
Законный вопрос программиста ИМО. Если бы мне пришлось создать установщик, я бы хотел, чтобы он соответствовал критериям правильной установки Windows 7.   -  person AlbertoPL    schedule 01.07.2009
comment
Извините, я должен был уточнить: когда я сказал, что у меня есть установщик, я имел в виду, что я создал установщик с использованием C, поэтому он находится в переполнении стека, а не в ошибке сервера.   -  person    schedule 01.07.2009


Ответы (3)


Что ж, отвечая на свой вопрос, я нашел способ решить эту проблему. Я заметил, что журнал изменений 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>

Некоторый поиск в Google строк обнаружил некоторую документацию: по-видимому, это что-то новое, что было добавлено в Windows 7, и что документация для него была создана 20 мая. Не помогло то, что Microsoft не ссылается на это ни из одного из на их страницах документации Win7 он не особо выделяется. вздох

Изменить: Это плохо задокументировано в MSDN здесь.

person Community    schedule 01.07.2009
comment
На самом деле это не решает основную проблему. Вы просто говорите Windows, чтобы она больше не сообщала об этом. msdn.microsoft.com/en-us/library/dd371711 (VS.85) .aspx; Windows 7: раздел «Приложения с совместимостью» не получит защиты от PCA. По общему признанию, в некоторых случаях это может быть правильный путь. - person Kevin Montrose; 01.07.2009
comment
Что ж, не совсем понятно, правильно ли Windows сообщает об этом. Установщик работает так, как задумано, с отключенным PCA, и, как я отмечал в другом своем комментарии, я давно пробирался через журналы проверки приложений и даже просмотрел различные вызовы API, чтобы убедиться, что это не так уж и ново для Win7. Я промахнулся. Я настолько урезал программу установки, что она даже ничего не делала, а Windows все еще жаловалась. Так что я почти уверен, что это правильный курс действий. - person ; 01.07.2009

Я столкнулся с тем же сообщением об ошибке при запуске нового приложения на основе Qt, которое я создал. Те же симптомы - это «полезное» сообщение будет появляться после закрытия .exe, независимо от того, что делает программа.

Теперь у меня есть разные проекты приложений qt, все построенные одинаково. И никто из остальных этого не делает.

Я наконец понял, что эта ошибка была вызвана исключительно тем фактом, что я назвал этот конкретный проект «установщиком». Я получил двоичный файл installer.exe, и он, несомненно, имел бы имя проекта, встроенное в него в другом месте (не углубляясь в файл проекта, созданный qmake, не совсем уверен, что именно).

Интересно то, что вы можете столкнуться с этой проблемой, просто имея проект под названием «установщик» и ничего больше.

person user876725    schedule 30.03.2014

Вы бросили набор инструментов для обеспечения совместимости приложений у вашего установщика?

У меня никогда раньше не было причин заниматься этим, но похоже, что это именно то, для чего он предназначен.

person Kevin Montrose    schedule 01.07.2009
comment
Да, я пробовал это. Просмотрел каждую запись в журнале, который был сгенерирован, и не смог найти никакой полезной информации. - person ; 01.07.2009