ClickOnce를 사용하여 기본 Delphi 애플리케이션을 배포할 수 있습니까?
-
09-06-2019 - |
문제
Delphi 애플리케이션을 시작하는 데 사용되는 스텁 C# exe 없이 ClickOnce를 사용하여 기본 Delphi 애플리케이션을 배포할 수 있습니까?
VB6, C++ 및 기타 기본 Windows 응용 프로그램에도 동일한 질문이 적용됩니다.
해결책
개인적으로 저는 애플리케이션 타임스탬프가 서버와 동기화되지 않을 때 자체 업데이트 프로세스를 시작하는 자체 메커니즘을 구축합니다.그리 어렵지는 않지만 간단한 작업은 아닙니다.
그런데 Delphi의 경우 타사 도움말을 사용할 수 있습니다.
http://www.tmssoftware.com/site/wupdate.asp
업데이트됨:
내 구현의 경우:
MyApp.EXE는 3가지 모드로 실행됩니다.
인수가 없는 MyApp.EXE.그러면 일반적으로 응용 프로그램이 시작됩니다.
1.1 가장 먼저 하는 일은 서버에서 자체 파일 시간을 검증하는 것입니다.
1.2 업데이트가 필요한 경우 업데이트된 파일을 "MyApp-YYYY-MM-DD-HH-MM-SS.exe"라는 파일로 다운로드합니다.
1.3 그런 다음 명령 인수를 사용하여 "MyApp-YYYY-MM-DD-HH-MM-SS.exe"를 호출합니다.
MyApp-YYYY-MM-DD-HH-MM-SS.exe --update MyApp.EXE
1.4 본 애플리케이션을 종료합니다.
1.5 업데이트가 필요하지 않으면 응용 프로그램이 1.1부터 정상적으로 시작됩니다.
MyApp.EXE --"FILENAME" 업데이트.
2.1 성공할 때까지 100ms마다 "FILENAME"에 자신을 복사해 보세요.
2.2 성공하면 "FILENAME"을 호출합니다.
2.3 "FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe"를 호출하여 자신을 삭제합니다.
2.4 종료
MyApp.EXE --"FILENAME" 삭제
3.1 성공할 때까지 500ms마다 "FILENAME" 파일을 삭제해 보세요.
3.2 종료
나는 이미 7년 동안 내 응용 프로그램에 이 계획을 사용해 왔으며 잘 작동합니다.단계에는 많은 프로세스가 포함되므로 문제가 발생했을 때 디버깅하는 것은 상당히 고통스러울 수 있습니다.보다 간단한 문제 해결을 위해 추적 로깅을 많이 수행하는 것이 좋습니다.
행운을 빌어요
다른 팁
아니요, 앱의 진입점은 관리 코드여야 합니다.
이것은 블로그 게시물 ClickOnce의 주요 저자 중 한 명이자 다음의 저자인 Brian Noyes가 작성했습니다. ClickOnce를 사용한 스마트 클라이언트 배포.
앱이 정말 레거시인 경우(예:VB6, MFC, ATL 등), 비관리 코드 실행 파일과 마찬가지로 아니요, ClickOnce를 통해 실행 파일로 배포할 수 없습니다.
허용되는 해결 방법은 기본 exe를 시작하는 관리 코드 스텁 exe인 것 같습니다.
스텁 없이 이 작업을 수행할 수 있는지 100% 확신할 수는 없지만 이 문서에서 몇 가지 통찰력을 얻을 수 있습니다.