2012-01-14 2 views
5

나를 미치게하는 문제가 있습니다.ClickOnce 게시 된 DPI 인식 응용 프로그램 설치

나는 visual studio 2010 professional을 사용합니다.

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

가 그럼 난 내 응용 프로그램을 게시하고 나는 그것을 설치하려고 : 나는 일반이 포함 된 응용 프로그램 매니페스트를 추가로 마이크로 소프트는 here을 보였다하는 방식으로 dpi 인식 응용 프로그램을 만들 수 있습니다. 완전한 실패. 설치 중에 응용 프로그램의 형식이 올바르지 않은 오류 창이 나타납니다 (번역본, 폴란드어 버전의 운영 체제 사용). 오류 로그는 매니페스트 생성 중에 HRESULT 0x8007001f 예외가 있음을 보여줍니다. 이 예외는 "장치가 작동하지 않음"을 의미합니다. 위대한하지만 어떤 장치?.

Google 연구에 따르면 이러한 종류의 오류는 어셈블리의 부적절한 서명과 관련 될 수 있다고 제안했습니다. 나는 여러 시간 동안이 결속을 해결하려고 노력하여 성공하지 못한 채 다양한 방법으로 집회에 서명했습니다.

나는 전체적으로 <windowsSettings> 태그를 주석으로 처리하는 것으로 충분하다는 것을 알았습니다. 그러면 어셈블리 서명이 전혀없는 상태에서도 응용 프로그램이 잘 설치됩니다. 나는 그것이 웹 브라우저에서 해당 태그의 xmlns 속성에 url을 입력 한 다음 "요청을 처리하는 동안 오류가 발생했습니다"라는 서버 응답을 사실과 함께 처리해야하는지 궁금합니다. 메시지.

누군가 도움을 줄 수 있습니까? 나는 win7, win7 64 및 winxp를 여러 컴퓨터에서 사용하고 동일한 결과를 얻을 때마다 시도했다 ... 왜 Google이 이것에 대해 아무 것도 표시하지 않는지 궁금합니다. 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를 제거하고 마법사를 한 번 클릭하여 작성해야합니다.

관련 문제