Visual Studio에서 설치 프로젝트가 있습니다. 일반 설치의 일부로 Windows 레지스트리에 일부 키와 값을 작성/업데이트합니다. 업데이트를 되돌릴 수있는 방법은 무엇입니까?VS 설치 프로젝트; 제거시 레지스트리 값을 복원하는 방법은 무엇입니까?
당신은 "그들은 되돌릴 수 있습니다."라고 말할 수도 있지만 그렇게 생각하지는 않습니다. 어떻게 작동하는지 생각해보십시오. VS 디자이너에서 원하는 레지스트리 키와 값을 지정하십시오. 이러한 키와 값은 설치 중에 기록되며 설치 제거 중에 삭제됩니다. 단순한. 뒤집을 수 없는게 뭐야?
설치 중에 작성된 키 중 하나에 기존 값이있는 경우 문제가 발생합니다. 값 1이 있다고 가정하십시오. 그런 다음 새 설치에서 값 100을 얻습니다. 설치 제거 후에는 값이 전혀 없습니다. 값은 없어집니다.
나는 "사용자 지정 작업"으로이 문제를 해결하기 위해 노력했다.
설치하는 동안 사용자가 확인하면 msiexec은 값을 레지스트리에 씁니다. 이전의 레지스트리 키에 있던 내용이 모두 사라졌습니다. ("Update A"라고 부름)
값을 보존하려면 "before"설정을 읽고 유지하는 사용자 정의 작업이 있습니다. 앞에 "업데이트 A"가 실행됩니다. 여태까지는 그런대로 잘됐다.
제거 할 때 정상적인 진행 과정은 설치 중에 추가 된 일반 레지스트리 키와 값을 제거하는 것입니다. 이것은 잘 작동합니다. 이것을 "업데이트 B"라고 부르십시오.
원래 레지스트리 값을 복원하려면 다른 "사용자 지정 동작"이 있습니다. 이 프로그램은 제거시 실행됩니다. 성공적으로 원래 값을 레지스트리로 복원합니다. 레지스트리는 원래 설치 전과 동일하게 나타납니다. 나는 이것이 ProcMon (레지스트리 업데이트를 모니터 할 수있는 도구)을 사용하여 작동하는지 확인했습니다. 이것을 "업데이트 C"라고 부르십시오.
유일한 문제가 있습니다. 제거시 업데이트 B는 업데이트 C 이후에 발생합니다. 즉, 사용자 지정 작업이 원래 레지스트리 설정을 복원 한 후 msi는 다른 모든 레지스트리 업데이트와 마찬가지로 복원 된 값을 지 웁니다.
결과적으로 레지스트리에는 복원 된 값 대신 빈 값이 있습니다.
어떤 도움이 필요합니까? 업데이트를 어떻게 다시 주문할 수 있습니까? 이 경우 Orca이 필요합니까? 나는 이것을 설치하고 또 다른 도구를 배우기를 정말로 원하지 않는다. 나는 또한 그것을 자동으로 원한다. 확실히 MSI 편집기를 시각적으로 클릭하여이 작업을 수행하고 싶지는 않습니다.
나는 WindowsInstaller.Installer 클래스를 사용하는 자바 스크립트 빌드 후 이벤트에이 작업을 수행 할 수 있습니까? Aaron Stebner published a script에 "설치 후 응용 프로그램 시작"이 추가됩니다. 대화 상자에서 Visual Studio에서 생성 한 MSI로 이동합니다. Windows Installer는 "응용 프로그램 시작"기능을 지원하지만 VS2008/2005 디자이너에게는 노출되지 않습니다. 빠른 biolerplate 스크립트, VS에서 빌드 후 단계로 실행 대화 상자에 추가되었습니다.
사용자 지정 동작의 순서와 비슷한 것이 가능합니까?나를 위해