각 DLL의 버전을 지정하는 ftp 사이트의 매니페스트 파일에 따라 ftp 사이트에서 새 dll을 가져 와서 응용 프로그램을 업데이트하는 코드를 작성 중입니다. 기본 개념은 시작시 업데이트 프로그램이 실행되어 ftp 사이트의 매니페스트를 확인하고 현재 응용 프로그램에서 사용하는 dll보다 최신 인 dll을 다운로드 한 다음 응용 프로그램을 시작하고 스스로 종료하는 것입니다.ftp 사이트에 대한 로컬/원격 액세스 동기화
이렇게하면 다음과 같은 문제가 발생합니다.이를 처리하는 가장 좋은 방법은 확실하지 않습니다. ftp 사이트에 새 dll을 넣고 싶지만 동시에 updater 응용 프로그램 인스턴스가이를 읽으려고합니다. dll. dll을 삭제 한 다음 새 파일을 복사하면 매니페스트에 파일이 있어야한다고하더라도 업데이터에서 파일을 볼 수 없습니다.
저는 동기화 객체 역할을하는 일종의 마커 파일에 대한 아이디어를 가지고 있으며, 그것의 존재와 업데이터 인스턴스가 잠금 장치로 사용할 수 있지만 그저 문제를 움직이는 것이 아닙니까? 잠금이 있는지 확인한 후 다른 사람이 잠금을 설정할 수있는 잠금을 설정하고 ftp 파일을 수정하는 사이에 여전히 시간이 있습니다. 또한 마커를 삭제하기 전에 일부 업데이터가 충돌하면 남은 마커를 삭제해야하는지 여부를 알릴 방법이 없습니다.
편집 : 파일을 다른 폴더에 업로드 한 다음 폴더 이름을 바꾼다는 제안을 보았습니다. 이름 바꾸기는 ftp의 기본 작업이기 때문에 이루어졌지만 이름을 바꿀 수는 있습니다. 기존 폴더? 기존 폴더를 먼저 삭제하면 안되므로 동일한 문제가 발생합니까?
해결 방법이 있습니까?
감사합니다. 나는 그것이 효과가있을 것이라고 생각한다. 매니페스트는 사용할 dll 버전을 지정하므로 동시에 두 dll 버전을 갖는 데 아무런 해가 없습니다. 새 DLL이 업로드되면 새 매니페스트를 사이트에 복사합니다. 버전 간 겹치는 부분에서 클라이언트는 알아 내야 만합니다. 이는 최신 매니페스트 버전이지만 당연히 수행 할 수 있습니다. 나는 조금 더 간단한 것을 준비 중이다. 그러나 다른 대답이 오지 않는다면 나는 이것을 받아 들일 것이다. – Boris
매니페스트를 업데이트 할 때 동일한 문제가 발생한다는 사실이 나에게도 발생했습니다. 아마도 매우 작아서 위험이 더 적을 수 있습니다. 어쩌면 이전 매니페스트를 삭제하고 새 DLL을 업데이트 한 다음 새 매니페스트를 업로드 할 수 있습니다. 현재 이전 DLL을 다운로드하는 클라이언트는 모두 OK를 계속 수행하며 새 클라이언트가 매니페스트를 찾지 못하면 기다리고 10 초 후에 다시 시도 할 수 있습니다. 그리고 매니페스트를 다운로드 한 후 클라이언트는 파일 끝 마커를 확인하여 완료되었는지 확인할 수 있습니다. –
나는 그것에 대해 생각해 보았다. 나는 그 매니페스트를 업데이트해야한다고 생각하지 않는다. 대신 매니페스트 이름의 버전을 지정해야합니다. 그런 다음 클라이언트는 최신 매니페스트를 찾아서 다운로드하고 함께 다운로드 할 수 있습니다. 잠시 후, 한 시간 또는 하루 정도 지나면 이전 매니페스트를 다운로드 한 모든 클라이언트가 이전 dll을 다운로드했을 것입니다. 현재 다운로드는 새 버전에만 적용되므로 이전 버전을 삭제할 수 있습니다. 새 매니페스트가 완전히 업로드되었는지 확인하기 위해 다른 매니페스트를 만들고 다른 이름으로 이름을 바꿀 수 있습니다. – Boris