установить на Windows 7 устранение неполадок совместимости PCA - «Эта программа, возможно, не установлена ​​правильно» - PullRequest
2 голосов
/ 03 июня 2011

Хорошо, я использую Visual C ++ 2010 Express и ResEdit для приложения SETUP моего миди-секвенсора.

Win32 API, без MFC, некоторые пользовательские окна и классы управления и тому подобное.

Сейчасчто у меня Windows 7, моя чертова программа SETUP не работает.

Windows выдает мне сообщение "Правильно ли установлено это приложение ??"штуковина.Это означает, что что-то не так с моим установщиком.

Я пытаюсь выяснить, что это может быть ...

Я видел эти 2 SO потока:

«Возможно, эта программа установлена ​​неправильно»

«Возможно, эта программа неправильно установлена» в Windows 7 RC

Какиепривели меня в эти места:

http://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx

http://msdn.microsoft.com/en-us/library/bb756937.aspx

http://msdn.microsoft.com/en-us/library/aa905330.aspx#wvduac_topic3

http://blogs.msdn.com/b/cjacks/archive/2009/06/18/pca-changes-for-windows-7-how-to-tell-us-you-are-not-an-installer-take-2-because-we-changed-the-rules-on-you.aspx

http://community.flexerasoftware.com/archive/index.php?t-189007.html

Только записи реестра, которые я использую, являются стандартным местом удаления и ассоциациями для типов файлов.

SETUP записывает файл dat.cfg в программные файлы \ pianocheater dir, который указывает, где находятся все данные приложения.является.(просто текстовый файл с путем в нем) (и т.д.cfg для временного каталога в этом каталоге данных).

Так что я ЧИТАЮ только из программных файлов \ pianocheater после НАСТРОЙКИ.

Кто-нибудь может подумать, почему Windows не понравилась установка?Исходный код: http://shazware.com/_etc/SETUP_PIANOCHEATER.cpp Он использует мою библиотеку окон, управляющих классов, похожих по духу на mfc.Я мог бы также послать полезные части.

Это не так уж плохо для установочного приложения.Должно быть довольно легковероятно для парня win32 / галлон.

Я мог бы использовать какой-нибудь хе-хе ...: /

О да, я должен указать, что Go () является точкой входавместо main ().DBG () просто выполняют OutputDebugString () и, кажется, все работают нормально.TStr - это просто большой символ [MAX_PATH] (а я не использую юникод)

И хитрость, вероятно, в том, что я на 64-битной win7, но это 32-битное приложение.Хотя я почти уверен, что правильно использую реестр для ассоциирования и удаления.

Так что же мне нужно делать с манифестом XML?Или есть более правильный способ сделать что-то?

Большое спасибо,

... Стив

1 Ответ

3 голосов
/ 03 июня 2011

Прежде всего, проверьте, является ли это сообщение ложным срабатыванием или нет. Сообщение, которое вы видите, предназначено для использования эвристики (которая может быть неправильной!), Чтобы определить, произошел ли сбой программы установки из-за проблем совместимости с Windows Vista / 7. Если ваш установщик действительно совместим с Windows 7 / Vista, то все, что вам нужно сделать, это добавить манифест , объявляющий себя совместимым . Вы также захотите добавить запись requestedExecutionLevel в манифест, чтобы запросить повышение прав.

Если ваш установщик действительно не работает, то, конечно, вам следует сначала это исправить.

Наконец, если ошибка появляется из-за преждевременного выхода исполняемого файла средства запуска или что-то подобное, рассмотрите возможность подавления обнаружения установщиком, добавив также соответствующие записи манифеста в средство запуска (вы можете использовать requestedExecutionLevel из asInvoker если средство запуска не нуждается в административном доступе; наличие записи манифеста requestedExecutionLevel должно подавить обнаружение установщика ). Обратите внимание, что вы должны убедиться, что вы используете ShellExecute для вызова основного процесса установки, а не CreateProcess, иначе UAC может не повысить уровень дочернего процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...