2013-10-01 2 views
0

Visual Studio Installer를 사용하여 프로젝트의 설치 프로그램을 만들었습니다. 내 제품이 자주 업데이트됩니다. 그래서 나는 일정 기간 동안 업데이 트를 제공해야합니다. 제품 코드를 변경하고 이전 업그레이드 코드를 그대로 유지하여 버전을 생성 할 수 있습니다.이전 버전의 DB를 유지하여 설치 프로그램을 업데이트 함 설치 - Visual Studio Installer

그러나 문제는,

내 응용 프로그램 폴더 (설치 폴더)에 설치되어있는 SQLite 데이터베이스를 데.

내 다음 업데이트 버전에서는 DB의 스키마가 약간 변경 될 수 있습니다. 그러나 이전 버전에서 저장 한 데이터는 데이터베이스가 업데이트되고 스키마가 약간 변경된 경우에도 최신 버전에서 필요합니다.

내 생각에는 다음 버전을 설치하는 동안 이전 버전의 백업을 가지고 있습니다. 그리고 최신 버전이 설치되면 수정 된 DB는 백업 폴더에있는 이전 DB의 데이터를 가져 와서 업데이트해야합니다. 최신 버전을 설치할 때 예외가 발생하면 설치 프로세스를 롤백해야하며 이전 버전은 그대로 유지해야합니다. 이 경우 VSI의 사용자 지정 작업이 도움이 될 수 있습니다.

달성 할 수있는 방법이 있습니까? 문제를 해결할 다른 방법이 있다면 그것을 알고 싶습니다.

답변

1

그래서 일정 기간 동안 업데이트해야합니다.

은 클라이언트 기술자에게 업데이트를보다 세련되게 적용 할 수있는 Microsoft 기술인 OnceClick을 사용하는 것이 가장 좋습니다. 최근 버전이 설치되고 나면

수정 된 DB 백업 폴더에있는 이전 DB에서 데이터를해야하고 업데이트해야합니다.

업데이트 중에 문제가 발생하고 모든 것을 복구하려는 경우 항상 데이터베이스 백업을 수행해야한다는 데 동의합니다. 하지만 어떻게 백업 데이터베이스에서 데이터를 가져와 새 데이터베이스를 업데이트 할 예정입니까? 각 테이블의 데이터를 읽고 새 데이터베이스 테이블에 삽입 하시겠습니까?

아니요 응용 프로그램 업데이트가 발생할 때이 아닌 새 데이터베이스 스키마를 복사하는 것이 좋습니다. delta script을 업데이트 패키지에 포함 시키십시오. 이 델타

당신이해야 할 것은,

  1. 를 업그레이드합니다 어느, 기존 데이터베이스에 델타 스크립트를 실행하여 데이터베이스 백업
  2. 를 타고 등 단지 열 크기 또는 데이터 형식 변경 될 수 있습니다 새 버전의 데이터베이스.당신은 당신이 당신이 언급 한 접근 방식을 따르는 경우에 처리해야 할 것이다 복잡성을 많이 제거합니다이 approch에서

+0

덕분에 많이 (는 새 데이터베이스를 복사하고 기존 DB에서 데이터를 얻을) 당신이 내 문제에 대답하기 위해 취한 관심 때문입니다. 이전 설치에서 DB 백업을 가져 오는 링크를 언급 해 주시면 기쁘게 생각합니다. 나는 지금 그것이 나의 요구 사항을 충족시키는 지보기 위해 OnceClick과 Delta Script를 거치고있다. 제안 주셔서 감사합니다 :) – BinaryMee

+0

@CMB SqlLite 데이터베이스는 어떤 compltex 논리를 백업하지 않아도 파일입니다. 단지 File.Copy()가 그것을 할 것입니다 :). 도움이된다면 답을 upvote하십시오. 그러면 다른 사람들이 관련 답변을 찾는 데 도움이됩니다. – Kurubaran

+0

예, 필자는 파일 복사를 사용합니다. 그러나 동시에 최신 버전을 설치하는 동안 이전 버전의 DB를 복사 할 수 있어야합니다. 이전 설치 양식 파일을 복사하는 과정에서 현재 설치 부분의 사용자 지정 작업에서 내가 물었다. :) – BinaryMee

관련 문제