Подтвердить что ты не робот

Помощник по совместимости программ считает, что мое приложение является установщиком

Я создал приложение .NET С# WinForms на Win 7 RTM x64, которое позволяет сказать, что я вызвал DataInstaller.

Когда я запускаю эту программу за пределами отладчика (просто пустую форму без функции на данный момент), она работает нормально, пока я не закрою форму. Затем я получаю сообщение от помощника по совместимости программ, в котором говорится:

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

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

Если я называю приложение DataThingy, это не проблема, я думаю, это связано с тем, как программы, называемые * Setup, получают значок щита UAC.

Я предполагаю, что будет что-то простое, что я могу помещать в манифест приложения, чтобы предотвратить это?

Я не уверен, что это происходит в Vista, поскольку у меня нет доступа в настоящее время.

Изменение имени не является опцией, и выключение UAC не является вариантом, поэтому, пожалуйста, не предлагайте это!

Edit:

OMG.

Кажется, что если любое из следующих утверждений верно, UAC вставляет свое весло в:

Имя Exe содержит слово Installer

AssemblyInfo.cs

AssemblyTitle contains the word 'Installer'
    e.g. [assembly: AssemblyTitle("DataInstaller")]
AssemblyProduct contains the word 'Installer'
    e.g. [assembly: AssemblyProduct("Data Installation Utility")]

"Установщик" также может быть "Setup".

Это порождает веру, это действительно так. Очевидно, один из старых программистов VB6 переместился в команду UAC в Редмонде.

Мне все еще нужно обходное решение, я не готов признать, что мое приложение не может быть вызвано установщиком, потому что оно не касается реестре или не помещает файлы в папку Program Files.

Я предполагаю, что UAC поставит машину в полную блокировку, если я попытаюсь выполнить мое приложение IAmAVirus.exe. (На самом деле, я не пытаюсь это сделать, потому что я не совсем уверен, что я просто глуп)

4b9b3361

Ответ 1

Добавьте это в свой манифест.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<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}"/>
    <!--The ID below indicates app support for Windows 8 -->
    <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    <!--The ID below indicates app support for Windows 8.1 -->
    <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
  </application>
</compatibility>

GUID для всех операционных систем в предыдущем примере обеспечивают поддержку нижнего уровня. Приложениям, поддерживающим несколько платформ, не нужны отдельные манифесты для каждой платформы.

Взято из манифест приложения (исполняемый файл).

Ответ 2

Как и мастерская, Алекс сделает предположение, основанное на именах файлов.

Но вы пытались добавить файл манифеста? Это позволяет вам использовать права доступа, необходимые для запуска приложения.

MSDN о том, как создать его из Visual Studio Еще одна статья ссылки, в которой help.

Ответ 3

У меня была эта проблема, и я решил ее исправить, убедившись, что мой заголовок сборки в файле AssemblyInfo.cs и имя сборки моего файла cs.proj совпадают. Когда они не были синхронизированы, это забрасывало эту ошибку, заставляя их одинаково заставлять ее уходить. Не уверен, что это применимо к вашей ситуации, но такая же ошибка аналогичных обстоятельств, возможно, стоит попробовать и избежать принятого ответа об игнорировании ошибки все вместе.