2012-01-14 16 views
5

Ho un problema che mi fa impazzire.Installazione dell'applicazione ClickOnce pubblicata in formato DPI

Uso Visual Studio 2010 Professional. Creo l'applicazione dpi-aware nel modo in cui Microsoft ha mostrato here, che è, in generale, l'aggiunta di un manifesto per l'applicazione che contiene questo:

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

Poi ho pubblicare la mia domanda e io cerco di installarlo. Fallimento completo Durante la finestra di errore di installazione viene visualizzato che l'applicazione non è formattata correttamente (questa è una traduzione, io uso la versione polacca del sistema operativo). Il log degli errori mostra che c'era un'eccezione HRESULT 0x8007001f durante la creazione del manifest. Questa eccezione indica che "il dispositivo non funziona". Ottimo ma quale dispositivo?

La ricerca di Google ha suggerito che quel tipo di errore che ho potrebbe avere qualcosa a che fare con la firma impropria del montaggio. Ho passato diverse ore a cercare di risolvere questo legando per firmare l'assemblea in vari modi senza successo.

Quello che ho trovato è sufficiente commentare l'intero tag <windowsSettings> e l'applicazione si installa bene, anche senza alcuna firma di montaggio. Mi chiedo se abbia qualcosa a che fare con il fatto, che quando si digita quell'url nell'attributo xmlns di quel tag nel browser Web, la risposta del server con "Si è verificato un errore durante l'elaborazione della richiesta". Messaggio.

Qualcuno può aiutare? Ho provato questo su diverse macchine con win7, win7 64 e winxp su di loro e ogni volta ottengo lo stesso risultato ... Mi chiedo perché Google non mostra nulla su questo. Sono l'unico che tenta di installare l'applicazione compatibile con dpi dpi di ClickOnce?

risposta

2

Basta abilitare DPI dal codice. Qualcosa di simile a questo:

[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); 
    ... 

E rimuoverlo app.manifest, dovrebbe essere creato con un clic una volta Pubblicazione guidata.

Problemi correlati