2012-01-14 12 views
5

Tengo un problema que me vuelve loco.Instalación de la aplicación ClickOnce publicada compatible con DPI

Uso visual studio 2010 professional. Puedo crear la aplicación dpi consciente de la forma en que Microsoft mostró here, que es en general de la adición de un manifiesto a la solicitud que contenga lo siguiente:

<?xml version="1.0" encoding="utf-8"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" > 
    <asmv3:application> 
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> 
     <dpiAware>true</dpiAware> 
    </asmv3:windowsSettings> 
    </asmv3:application> 
</assembly> 

Luego publico mi aplicación y trato de instalarlo. Fallo completo. Durante la ventana de error de instalación aparece que la aplicación no está formateada correctamente (esto es una traducción, uso la versión polaca del sistema operativo). El registro de errores muestra que hubo una excepción HRESULT 0x8007001f durante la creación del manifiesto. Esta excepción significa que "el dispositivo no está funcionando". Genial, pero ¿qué dispositivo ?.

La investigación de Google sugirió que ese tipo de error que tengo puede tener algo que ver con la firma incorrecta del ensamblaje. He pasado varias horas tratando de resolver esta vinculación para firmar la asamblea de varias maneras sin éxito.

Lo que he encontrado que es suficiente para comentar toda la etiqueta <windowsSettings> y luego la aplicación se instala bien, incluso sin ninguna firma de ensamblaje. Me pregunto si tiene algo que ver con el hecho de que cuando escribe esa url en el atributo xmlns de esa etiqueta en el navegador web, el servidor responde con el mensaje "Se produjo un error al procesar su solicitud". mensaje.

¿Alguien puede ayudar? Lo he probado en varias máquinas con win7, win7 64 y winxp y cada vez que obtengo el mismo resultado ... Me pregunto por qué Google no muestra nada al respecto. ¿Soy el único que intenta instalar la aplicación conocida de dpi de ClickOnce?

Respuesta

2

Simplemente active DPI aware desde el código. Algo como esto:

[System.Runtime.InteropServices.DllImport("user32.dll")] 
private static extern bool SetProcessDPIAware(); 

[STAThread] 
static void Main() 
{  
    if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware(); 

    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    ... 

Y eliminar app.manifest, debe ser creada por clic una vez publicar asistente.

Cuestiones relacionadas