2011-04-26 2 views
2

업그레이드 설치가 파일을 새 버전으로 바꾸지는 않지만 실제로는 이전 설치 패키지를 제거하고 새 설치 패키지를 설치하는 것으로 보입니다. 내 응용 프로그램을 설치했고 설치 디렉토리에 일부 파일을 생성했다고 상상해보십시오. 그런 다음 사용자는 제품의 새 버전을 가져오고 설치 패키지를 시작합니다. 새 설치 패키지에 "이전 버전 제거"가 true로 설정 되었기 때문에 패키지가 이전 버전의 제품을 삭제합니다. 버전 번호가 같고 제품 코드가 다릅니다. 응용 프로그램에 의해 생성되었지만 패키지에 의해 생성 된 파일은 삭제되지 않으며 이는 좋은 결과입니다. 그러나 사용자는 새 버전을 다른 위치에 설치할 수 있으며 응용 프로그램은 이전 응용 프로그램 파일을 찾지 않습니다. 어떻게 처리할까요? 응용 프로그램이 이미 설치된 경우 폴더 선택 화면을 건너 뛰는 사용자 지정 동작 및 조건을 작성 하시겠습니까? 또는 이미 지정된 디렉토리의 이전에 설치된 파일을 업그레이드하는 기본 제공 방법이 있습니까?설치 교체 파일을 업그레이드 할 수 있습니까?

답변

1

응용 프로그램의 설정을 Program Files에 저장하면 안되며 CommonAppDataFolder, AppDataFolder 또는 LocalAppDataFolder에 저장해야합니다. 이 폴더 중 하나를 사용하여 응용 프로그램 설정/데이터를 저장하면 사용자는 다른 위치에 자유롭게 설치할 수 있으며 응용 프로그램에는 해당 설정/데이터가 계속 표시됩니다.


는 지금까지 내가 이해, 업그레이드의 동작은 설치 순서 RemoveExistingProducts 조치를 일정 위치에 따라 달라집니다.


편집 : 응용 프로그램이 파일을 저장하는 위치를 변경할 수 없습니다 때문에, 수동으로 설치 위치를 추적해야합니다. 업그레이드 작업을 수행 할 때 업데이트 된 제품은 일반적으로 동일한 위치에 설치됩니다 (마법사 UI를 변경해야 할 수 있음).

수동 재설치 (즉, 앱을 제거한 사용자)에서 설정을 유지하고 다른 위치에 다시 설치하는 경우 레지스트리에 설치 위치를 저장하는 것만 볼 수 있습니다. 값이 레지스트리에 없으면 추가 조치가 실행되지 않아야합니다. 이전 설치 위치가있는 값이 있으면 저장합니다. 그런 다음 설정/데이터를 이전 위치에서 새 위치로 이동합니다 (임시 행을 MoveFile 테이블에 추가하여). 결국 새 설치 위치를 레지스트리에 저장합니다.

Program Files에 설정/파일을 저장하는 것이 Windows Vista 이상에서 예상대로 작동하지 않을 수 있습니다 (특히 UAC가 켜져있는 경우). 귀하의 설정은 실제로 프로그램 파일보다는 가상 저장소에 저장 될 수 있습니다. 파일을 옮기는 것보다 응용 프로그램을 업데이트하는 것이 훨씬 더 유리합니다.

+0

좋은 지적이지만 응용 프로그램의 파일 저장 위치 및 방식을 변경할 수 없습니다. –

+0

@ Bogdan0x400 답변을 업데이트했습니다. –

관련 문제