2009-08-21 10 views
2

Visual Studio 2008, 설치 및 배포, 최소한의 파일을 설치하고 일부 사용자 지정 작업을 실행하는 설치 프로젝트가 있습니다. 또한 설치 프로젝트가 적용되는 여러 개의 병합 모듈 프로젝트가 있습니다. 각 병합 모듈에는 서로 다른 구성 요소가 설치된 고유 한 하위 폴더가있는 모듈 대상 가능 폴더가 있습니다.제거 중에 파일을 남기는 모듈 병합

우리가 겪고있는 문제는 설치 프로젝트를 제거하는 동안 설치 프로젝트에서 배포 한 파일이 하드 드라이브에서 완전히 제거된다는 것입니다. 병합 모듈에서 배포 한 파일은 모두 제거되지 않습니다.

또한 병합 모듈에서 배포 한 파일이 여전히 하드 드라이브에있는 경우 설치 프로젝트를 다시 설치하면 은 병합 모듈에서 배포 한 파일을 덮어 쓰지 않습니다.

우리는 수용 가능한 결과를 가지고

1) 새로 설치하는 동안 병합 모듈 배치 파일이 제거 2시에 제거되도록)을 확인 덮어 쓸 수 병합 모듈에 의해 배치 파일을 허용

어떤 생각이라도 감사 할 것입니다!

답변

1

이 어쩌면 당신이 기대했던 대답은 아니지만, 그것은 당신을 도울 수있는 생각 ...

질문 : 당신은 정말 병합 모듈을 사용해야합니다? MSMs에 대한 아이디어는 훌륭하지만 실제로는 잘 작동하지 않습니다.

대신, (a) 앱 설치가 시작되기 전에 성공적으로 설치 및 커밋 할 수 있고, (b) 자신의 버전 관리를 유지하기 때문에 전체 MSI를 포함하는 것이 더 깨끗합니다. 다음 버전), (c) 설치 제거 프로세스 등을 사용하여 해당 파일 (및 모든 파일)을 제거 할 수 있습니다. 그들이 MSMS로 제공하는 Microsoft 라이브러리에는 항상 대신 사용할 수있는 재배포 가능 파일의 MSI 버전이 있습니다.

또는이 애플리케이션에 대해 병합 모듈을 직접 만들었습니까? 이 경우 나머지 설치와 동일한 설치 및 제거 프로세스를 수행하므로 MSI의 구성 요소로서 더 좋을 것입니다. 동일한 구성 요소를 사용하는 여러 앱이있는 경우 동일한 구성 요소 ID를 부여하고 공유를 종료 할 수 있습니다 (예 : 공유 구성 요소가 설치된 2 개의 앱이 있고 그 중 하나를 제거하면 공유 구성 요소 다른 앱이 설치되어있는 한 계속 유지됩니다).

+0

사실, 체인 된 msi를 사용하는 것이 좋은 해결책입니다. 우리는이 시점에서 모듈을 병합하는 데 많은 투자를했습니다. 최악의 경우라면이 방법을 사용하게 될 것입니다. – danlash

1

나는 비슷한 문제를 겪었습니다. 즉, [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls] 레지스트리 키의 문제 항목 때문입니다. 병합 모듈의 파일 중 하나라도 제거한 후에 목록에 있으면 참조 수가 해제되어 Windows Installer가 다른 응용 프로그램에서 파일을 사용하고 있기 때문에 파일이 남아 있어야한다고 생각합니다.

일반적으로이 문제는 설치 빌드간에 구성 요소의 '공유'상태를 변경하거나 패키지를 제거 할 때 참조 개수를 조정하지 않는 MSIZAP (Windows Installer 정리라고도 함)을 사용하여 발생합니다.

+0

나는 레지스트리를 체크 아웃했다. 우리 파일 중 아무 것도 거기에 나열되어 있지 않습니다. 나는 또한 우리의 병합 모듈을 확인하고 우리의 파일 중 어느 것도 공유 또는 유산으로 표시되지 않습니다. 제안에 감사드립니다. – danlash

관련 문제