Program Compatibility Assistant piensa que mi aplicación es un instalador


He creado una aplicación.NET C# WinForms en Win 7 RTM x64, que digamos que he llamado DataInstaller.

Cuando corro este programa fuera del depurador (solo un formulario vacío sin funcionalidad en este momento), funciona bien hasta que cierro el formulario. Luego recibo un mensaje del Asistente de Compatibilidad del Programa que dice:

Es posible que este programa no se haya instalado correctamente

Luego obtengo la opción de reinstalar usando la configuración recomendada o decir que el la instalación funcionó como se esperaba.

Si nombro la aplicación 'DataThingy' esto no es un problema, supongo que esto está relacionado con la forma en que los programas llamados *Setup ganan un icono de escudo UAC.

Asumo que habrá algo simple que puedo poner en el manifiesto de la aplicación para evitar esto?

No estoy seguro si esto ocurre en Vista ya que no tengo acceso actualmente.

Cambiar el nombre no es una opción y desactivar UAC no es una opción, así que no sugiera ¡esto!

Editar:

OMG.

Parece que si cualquiera de los siguientes son ciertos, UAC pega su remo en:

El nombre Exe contiene la palabra 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")]

'Installer' también puede ser 'Setup'.

Cuesta creer, realmente lo hace. Obviamente uno de los viejos programadores de VB6 fue reubicado en el equipo de UAC en Redmond.

Todavía necesito una solución alternativa, no estoy preparado para aceptar que mi solicitud no pueda ser llamada una instalador porque no toca el registro ni pone ningún archivo en la carpeta Archivos de programa.

Asumo que UAC pondría la máquina en bloqueo total si intentara ejecutar mi aplicación llamada IAmAVirus.exe. (En realidad, no me atrevo a intentarlo porque no estoy completamente convencido de que solo estoy siendo tonto)

Author: Michael S. Scherotter, 2009-10-16

3 answers

Añade esto a tu manifiesto.

<?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>

Los GUID para todos los sistemas operativos del ejemplo anterior proporcionan soporte de nivel inferior. Las aplicaciones que admiten varias plataformas no necesitan manifiestos separados para cada plataforma.

Tomado de App (ejecutable) manifest.

 42
Author: Justin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-09 07:56:03

Como Workshop Alex hará una conjetura basada en nombres de archivo.

¿Pero ha intentado agregar un archivo de manifiesto ? Eso le permite especificar qué derechos de acceso necesita para ejecutar la aplicación.

MSDN sobre cómo crear uno desde Visual studio Otro artículo de enlace que ayuda .

 3
Author: EKS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-16 11:40:36

Acabo de tener este problema y terminé arreglándolo asegurándome de que mi título de ensamblado esté dentro del AssemblyInfo.archivo cs y el nombre del ensamblador de mi cs.el archivo proj coincide. Cuando no estaban sincronizados estaba lanzando este error, haciéndolos lo mismo hizo que desapareciera. No estoy seguro de si se aplica a su situación, pero el mismo error circunstancias similares, podría valer la pena intentarlo y evitar la respuesta aceptada de ignorar el error todos juntos.

 2
Author: Kevin DiTraglia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-05 16:05:11