문제

VS 2003을 사용하여 설치를 구축하고 있습니다.설치에는 Excel 통합 문서와 두 개의 Access 데이터베이스가 있습니다.사용자 컴퓨터에 있는 기존 데이터베이스의 생성/수정 날짜에 관계없이 Access 파일을 강제로 로드해야 합니다.현재 ORCA를 사용하여 두 파일의 버전 번호를 강제로 적용하고 있지만 더 간단하고 우아한 솔루션을 찾고 싶습니다. .msi 파일을 직접 편집하는 것은 "모범 사례"가 아닙니다.

Access를 사용하여 데이터베이스에 버전 번호를 추가한 후 설치에 사용할 수 있는 방법이 있습니까?

이 작업을 수행할 수 있는 더 좋은 방법이 있나요?

도움이 되었습니까?

해결책

@LanceSc

MsiFileHash 테이블이 여기서 도움이 될 것이라고 생각하지 않습니다.이것 좀 봐 훌륭한 게시물 아론 스테브너 지음.클라이언트 컴퓨터에 있는 Access 데이터베이스의 마지막 수정 날짜는 생성 날짜와 다를 가능성이 높습니다.Windows Installer는 설치 이후 파일이 변경되었다고 올바르게 가정하고 파일을 바꾸지 않습니다.

이 문제를 해결하는 올바른 방법(질문 작성자가 지적한 대로)은 파일 테이블에 버전 필드를 설정하는 것입니다.

불행하게도 Visual Studio의 설정 프로젝트는 매우 제한적입니다.SQL을 사용하여 파일 테이블의 레코드를 수정하는 간단한 VBS 스크립트를 만들 수 있지만 대신 다음과 같은 대체 설정 작성 도구를 살펴보는 것이 좋습니다. WiX, InstallShield 또는 Wise.제 생각엔 WiX가 최고인 것 같아요.

다른 팁

리소스 버전이 제대로 지정되지 않은 것 같으니 REINSTALLMODE 속성을 변경해 보셨나요?

IIRC의 기본값 'omus'에서는 이전 버전이 있는 경우에만 설치할 수 있도록 허용하는 'o' 플래그입니다.이것을 'o'에서 'e'로 변경해 보세요.이 경우 누락된 오래된 파일과 동일한 버전의 파일을 덮어쓰게 된다는 점에 유의하세요.

버전을 수동으로 추가하는 것은 잘못된 시작 방법이지만 이렇게 하면 버전을 설치하기 위해 버전 번호를 수동으로 올릴 필요가 없습니다.

프로젝트의 빌드 이벤트를 살펴보세요.빌드 이벤트 중에 파일 버전을 개정하는 것이 가능할 수 있습니다.[그냥 내 말을 인용하지 마세요].당신이 할 수 있는지 없는지 잘 모르겠지만, 그것이 제가 먼저 조사를 시작할 곳이 될 것입니다.

당신은 Msi파일해시 이 파일에 대한 테이블입니다.이 작업을 수행하는 방법을 보려면 Microsoft Platform SDK의 일부인 WiFilVer.vbs를 살펴보세요.

내 다른 제안은 다음을 보는 것입니다. WiX 설치를 위해 Visual Studio 2003 대신.Visual Studio 2003은 MSI 지원이 매우 제한적이므로 유용한 작업을 수행하기보다는 MSI와 싸우는 데 많은 시간을 소비하게 될 수 있습니다.

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