obligatoria - crear instalador windows form c#
Asistente de compatibilidad de programas cree que mi aplicaciĆ³n es un instalador (3)
He creado una aplicación .NET C # WinForms en Win 7 RTM x64, que digamos que he llamado DataInstaller.
Cuando ejecuto este programa fuera del depurador (solo un formulario vacío sin funcionalidad en este momento), funciona bien hasta que cierre el formulario. Luego recibo un mensaje del Asistente de compatibilidad de programas que dice:
Este programa podría no haberse instalado correctamente
Luego tengo la opción de volver a instalar usando la configuración recomendada o decir que la instalación funcionó como se esperaba.
Si nombro la aplicación ''DataThingy'', esto no es un problema, supongo que está relacionado con la forma en que los programas llamados * Configuración obtienen un icono de escudo de UAC.
¿Supongo que habrá algo simple que pueda 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, ¡por favor no sugiera esto!
Editar:
DIOS MIO.
Parece que si alguno de los siguientes es cierto, UAC mete su remo en:
Nombre exe contiene la palabra Instalador
AssemblyInfo.cs
AssemblyTitle contains the word ''Installer''
e.g. [assembly: AssemblyTitle("DataInstaller")]
AssemblyProduct contains the word ''Installer''
e.g. [assembly: AssemblyProduct("Data Installation Utility")]
''Instalador'' también puede ser ''Configuración''.
Mendiga la creencia, realmente lo hace. Obviamente, uno de los antiguos programadores de VB6 se reubicó en el equipo de UAC en Redmond.
Todavía necesito una solución alternativa, no estoy preparado para aceptar que mi aplicación no pueda llamarse un instalador porque no toca el registro ni coloca ningún archivo en la carpeta Archivos de programa.
Supongo 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)
Acabo de tener este problema y lo solucioné asegurándome de que el título de mi ensamblaje dentro del archivo AssemblyInfo.cs y el nombre del ensamblado de mi archivo cs.proj coincidieran. Cuando no se sincronizaban, se producía este error, lo que hacía que desaparecieran. No estoy seguro de si se aplica a su situación, pero vale la pena intentarlo por las mismas circunstancias de error, y evite la respuesta aceptada de ignorar el error por completo.
Agrega 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 en el ejemplo anterior proporcionan soporte de nivel inferior. Las aplicaciones que admiten múltiples plataformas no necesitan manifiestos separados para cada plataforma.
Tomado de la aplicación (ejecutable) manifiesto .
Al igual que el Taller, Alex hará una conjetura basada en los nombres de archivos.
Pero, ¿has 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 help .