2012-11-21 2 views
2

우리는 C# 응용 프로그램을 개발하고 Wix로 설치할 수있는 MSI 파일로 패키지합니다. 응용 프로그램 실행 파일 및 .dll 파일은 ProgramFilesFolder의 표준 위치에 설치됩니다.Wix : ProgramFilesFolder에서 ProgramData로 데이터 이동

시작된 응용 프로그램이 로컬 .sdf 파일 (데이터베이스)을 작성하는 경우 존재하지 않는 경우.

.sdf 파일을 제외하고 모든 항목이 삭제되면 (예 : 최신 버전으로 업그레이드 할 때) 모든 항목이 삭제됩니다. 최신 버전을 설치하면 이전 .sdf 파일을 가져 와서 계속 사용합니다.

이제 문제는 .sdf 파일이 현재 ProgramFilesFolder 아래에 있다는 것입니다. "여행용 수하물을 엔진 칸에 보관"하고 싶지 않으므로이 .sdf 파일을 ProgramData으로 옮길 것입니다.

다른 경로에서 .sdf 파일을 사용하려면 응용 프로그램 코드에서이 변경을 수행 할 것입니다. 다음 번에 업그레이드 할 때 기존 .sdf 파일을 ProgramFilesFolder에서 ProgramData으로 이동해야합니다.

질문 -이 파일을 옮기는 이상적인 방법은 무엇입니까?

1) 윅스 설정 코드 - "이전"버전 (.sdf 파일의 위치를 ​​변경 한 버전보다 오래된 버전)에서 "새 버전"(새 버전 또는 이전 버전) 변경 버전과 동일) 및이 경우에는 파일을 이동하십시오. 여기서 좋은 점은 Wix가 모든 버전 번호를 "알고"있고 조건에 따라 조건부로 이동할 수 있다는 것입니다.

2) C# 응용 프로그램 코드 - Wix에서 CustomAction을 작성하는 것보다 간단합니다. 그러나 응용 프로그램 코드는 버전에 대해 아무 것도 모르기 때문에 Wix의 경우처럼 "이전"및 "새"버전을 사용하는 것과 동일한 논리를 사용할 수 없습니다. 그래서 우리는 일반적인 로직을 사용할 수 있습니다. 예를 들어, 새로운 위치에있는 파일이 있으면 거기에 사용합니다. 그렇지 않으면 이전 위치에 파일이 있는지 확인한 다음 파일이 새 위치로 이동합니다 (파일이 둘 다 존재한다면). 이전 위치에서 새 위치의 파일 만 사용하십시오.

최상의 선택 방법을 알려주세요.

설명 된 접근 방식의 위험성이 있습니까?

더 나은 해결책이 있습니까?

답변

1

설치 과정에서 원하는 동작을 얻기 위해 속성과 조건을 설정할 수 있기 때문에 모든 것을 WIX로 제어 할 것입니다.

나는 당신이 CA에서 수행해야합니다 변화는 발견 된 버전에 따라 파일을 이동하거나하지 않는 것입니다 여기 Checking for oldies

시작하는 것이 좋습니다.

큰 변화는이 Replacing Ourselves

HTH를 봐 필요한 경우