2011-09-07 3 views

답변

3

나는 이것에 대한 답을 할 수 없다고 생각합니다.하지만 해결책은 생각났습니다.

바로 가기를 찾고 시작 매개 변수를 ClickOnce 응용 프로그램에 전달하는 실행 프로그램 (매우 간단한 응용 프로그램)을 만들었습니다. 기존 방식으로 실행 프로그램을 설치해야하지만, 필요한 경우 ClickOnce를 통해 기본 응용 프로그램을 계속 업데이트 할 수 있습니다.

+0

WHY 할 수없는 링크? Windows 보안 제한? –

+0

@KevinBerridge는 응용 프로그램의 경로가 업데이트 될 때마다 변경되므로 모든 참조가 끊어집니다. – Darren

0

응용 프로그램이 설치되면 시스템이 시작 메뉴에 링크를 만들 :

나는 유용한 이러한 링크를 발견했다. 링크는 실제로 "appref-ms"확장자를 가진 파일입니다. 그래서, 트릭은 "appref-ms"를 사용하여 앱을 여는 프로토콜을 등록하는 것입니다.

그래서 ClickOnce 응용 프로그램이 시작되면 다음 레지스트리 항목을 만들어 프로토콜을 등록 할 수 있습니다. HKEY_CLASSES_ROOT myprotocol = {프로토콜 설명} 쉘 개방 명령 = 탐색기 %를의 1

. 이제 누군가가 myprotocol : XXX you'r 앱과 같은 URL을 클릭하면 "as ClickOnce"애플리케이션이 열리 며 새 버전이 있는지 확인합니다.

+0

이 작업을 수행 할 수 없습니다 (어떻게 .appref-ms 파일을 대상으로합니까?). 이것은 내 cms에 대한 것입니다 : 프로토콜 : HKEY_CLASSES_ROOT \ cms \ shell \ open \ command \ (기본값) = explorer % 1 또한 appref-ms 파일에 대한 경로도 시도했습니다. – Darren

0

ClickOnce를 사용하려는 경우 필수 URL 프로토콜 값없이 HKCR에 적절한 키를 추가해야합니다. . 그게 내가 (예 : "MyProgramName://...."나는 내 응용 프로그램이 필요없이 성공적으로이 작업을 수행 할 수있었습니다을 참조 할 수있는 URL 프로토콜을 원한 때문에 잘 작동

try 
{ 
    RegistryKey rk = Registry.ClassesRoot.OpenSubKey("MyProgramName", true); 
    rk.SetValue("URL Protocol", ""); 
} 
catch (Exception ex) 
{ 
    // handle, log, etc. 
} 

: 내 응용 프로그램 논리의 시작이 코드를 추가 관리 권한 - 아마도 다른 처리기를 등록하려고 했더라면 YMMV가 필요했을 것입니다. 최소한 값을 보면 응용 프로그램을 올바르게 시작하는 방법을 알 수 있습니다.

기본적으로 생성 된 레지스트리 키는 다음과 같습니다.

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\MyAppName] 
@="Electronic Data Interchange (EDI) File" 
"AppId"="MyAppName.application, Culture=neutral, PublicKeyToken=31fc6d113f9bb401, processorArchitecture=msil" 
"DeploymentProviderUrl"="file://server/share/MyAppName/MyAppName.application" 
"Guid"="{MY_APP_GUID}" 

[HKEY_CLASSES_ROOT\MyAppName\shell] 
@="open" 

[HKEY_CLASSES_ROOT\MyAppName\shell\open] 

[HKEY_CLASSES_ROOT\MyAppName\shell\open\command] 
@="rundll32.exe dfshim.dll, ShOpenVerbExtension {MY_APP_GUID} %1" 

[HKEY_CLASSES_ROOT\MyAppName\shellex] 

[HKEY_CLASSES_ROOT\MyAppName\shellex\IconHandler] 
@="{MY_APP_GUID}" 

그리고 게시 한 코드는 MyAppName 노드 아래에 공백 값이있는 URL Protocol을 추가하기 만하면됩니다.

+0

응용 프로그램 이름이 "CMS"(어셈블리 이름)이지만 해당 이름으로 HKCR에 키가 없습니다. ClickOnce 옵션에 파일 연결 (.cms)을 추가하면 .cms 키가 생성되지만 아무 도움이되지 않습니다. 키를 내보내고 여기에 게시 할 수 있습니다 (필요한 경우 수정). 감사. – Darren

+1

reg 키가 추가되었습니다. 솔직하게 말해서 나는 아직도 왜/어떻게 그것이 그 열쇠를 만들지를 100 % 확실하지는 않지만, 여러 환경에서 그것을 재현 해왔다. –

+0

불행히도 URL 프로토콜을 추가하기 만하면 (웹에 배포 된) Clickonce 응용 프로그램을 실행할 수 없습니다. URL 프로토콜은 응용 프로그램을 시작하지만 "Uri 체계가 지원되지 않으며 파일, HTTP 및 HTTPS 체계 만 지원됩니다"라는 System.Deployment.Application.InvalidDeploymentException (UriSchemeNotSupported)을 가져옵니다. 나는 100 % 막혔다 ... 심지어 오류 메시지를 봤지만 하나의 페이지가 돌아 오지 않았다. –

관련 문제