문제

프로그램을 종료한 다음 종료되는 프로그램에서 추가 코드를 실행하는 가장 좋은 방법은 무엇입니까?예를 들어, 프로그램이 스스로 업데이트되는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

몇 가지 옵션이 있습니다:

다른 응용 프로그램 .exe를 사용하여 자동 업데이트를 수행할 수 있습니다.아마도 이것이 가장 좋은 방법 일 것입니다.

프로그램이 실행되는 동안 프로그램의 exe 이름을 바꿀 수도 있습니다.따라서 일부 업데이트 서버에서 파일을 가져와 교체할 수 있습니다.프로그램을 다음에 시작할 때 새로운 .exe를 사용하게 됩니다.그런 다음 시작 시 이름이 바뀐 파일을 삭제할 수 있습니다.

다른 팁

그럴 것이다 정말 여기서 우리가 말하는 언어가 무엇인지 아는 것이 도움이 됩니다.PowerBuilder나 Cobol에서 이 작업을 수행하는 데 있어 정말 훌륭한 팁을 줄 수 있다고 확신하지만 실제로는 그것이 여러분이 원하는 것이 아닐 수도 있습니다!그러나 Java에 대해 이야기하고 있다면 종료 후크를 사용할 수 있습니다. 저에게는 아주 좋습니다.

고려해야 할 또 다른 사항은 제가 사용하고 있는 대부분의 "주요" 앱(FileZilla, Paint.NET 등)이 업데이트 프로그램에서 이전 버전의 앱을 제거한 다음 새 버전을 새로 설치하도록 한다는 것입니다. 응용 프로그램의.

나는 이것이 매우 큰 응용 프로그램에서는 작동하지 않는다는 것을 이해하지만 이것은 중소 규모 응용 프로그램에 대해 "선호되는" 프로세스인 것 같습니다.

종료하기 전에 기본 프로그램을 시작하는 두 번째 프로그램 없이 이를 수행하는 방법을 모르겠습니다.프로그램 2는 변경 사항을 다운로드하여 설치한 다음 기본 프로그램을 다시 시작합니다.

이전 앱에서는 이와 같은 작업을 수행했습니다.우리는 X 또는 닫기 버튼을 통해 프로그램 종료(.NET 2.0에서)를 캡처한 다음 사용자가 볼 수 없는 백그라운드 업데이트 프로세스를 시작했습니다.업데이트가 있는지 서버(클라이언트-서버 앱)를 확인하고 사용 가능한 업데이트가 있으면 BITS를 사용하여 백그라운드에서 다운로드합니다.그런 다음 다음에 애플리케이션이 열릴 때 새 버전이 있다는 것을 인식하고(플래그 설정) 사용자에게 새 버전을 알리는 메시지와 추가된 새 기능을 보려면 클릭할 수 있는 버튼을 표시합니다. 이 버전으로.

업데이트를 수행하기 위해 실행되는 보조 앱이 있으면 더 쉬워집니다."updater" 앱을 실행한 다음 그 안에서 다른 프로세스가 종료될 때까지 기다립니다.일반 앱 DLL 등에 액세스해야 하지만 업데이트도 필요한 경우 이미 업데이트된 DLL이 있는 보조 위치에서 업데이트 프로그램을 실행하여 원래 위치에서 사용되지 않도록 할 수 있습니다.

.NET 애플리케이션을 작성하는 경우 ClickOnce 사용을 고려할 수 있습니다.꽤 많은 사용자 정의가 필요한 경우 다른 곳을 찾아볼 수도 있습니다.

업데이트를 수행하는 외부 프로세스가 있습니다.업데이트를 찾으면 이를 보조 폴더에 다운로드한 다음 기본 애플리케이션이 종료될 때까지 기다립니다.종료 시 현재 파일을 모두 대체합니다.기본 프로세스는 4시간마다 업데이트 프로세스를 시작합니다.업데이트 프로세스는 기본 앱이 종료될 때까지 기다리기 때문에 기본 앱은 업데이트 애플리케이션을 시작하는 것 외에는 특별한 처리를 수행할 필요가 없습니다.

이것은 부수적인 문제이지만, 자체 업데이트 프로세스 작성을 고려하고 있다면 (1) 다운로드 시 저장하고 (2) 업데이트 서버에서 가져올 하나의 파일을 제공하기 위해 일종의 압축을 사용하는 방법을 고려해 보시기 바랍니다. .

그게 말이 되기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top