2012-01-14 51 views
5

我有一个让我发疯的问题。安装ClickOnce已发布的支持DPI的应用程序

我使用visual studio 2010 professional。我创建的方式,DPI感知应用程序,微软展示here,这是一般加入清单包含该应用程序:

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

然后发布我的应用程序,我尝试安装它。完全失败。在安装过程中,弹出的窗口显示应用程序格式不正确(这是翻译,我使用波兰语版本的操作系统)。错误日志显示清单创建期间有一个HRESULT 0x8007001f异常。这个例外意味着“设备不能正常工作”。很棒但是什么设备?

谷歌的研究表明,我得到的那种错误可能与程序集的不正确签署有关。我花了几个小时试图解决这个搭售,以各种方式签署大会而没有成功。

我发现只要注释掉整个<windowsSettings>标记就足够了,然后应用程序安装的很好,即使没有任何程序集签名。我想知道它是否与这个事实有关,即当您在Web浏览器中的该标记的xmlns属性中键入该URL时,服务器将以“处理您的请求时发生错误”作为响应。信息。

有人可以帮忙吗?我已经在win7,win7 64和winxp的几台机器上试过这个,每次我得到相同的结果...我想知道为什么谷歌没有显示任何关于这个。我是唯一一个尝试安装ClickOnce发布的支持dpi的应用程序的人吗?

回答

2

只从代码启用DPI。事情是这样的:

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

,并删除app.manifest,它应该通过点击创建一次发布向导。

相关问题