설치 중에 app.config의 강제 덮어 쓰기
-
05-07-2019 - |
문제
현재 클라이언트 소프트웨어를위한 4 개의 설치 프로그램이 있습니다.
- ClientSetStest
- ClientSetupProduction
- clientUpDateTest
- ClientUpDateProduction
그들 사이의 유일한 차이점은 설정에 Crystal Reports 재배포 가능한 파일이 포함되어 있으며 업데이트는 그렇지 않다는 것입니다. 테스트 및 생산은 그들이 실행하는 환경을 지정하고 Client.exe.config 파일에 하나의 줄이있는 유일한 차이점을 지정합니다.
멍청한, 나는 알고 있습니다. 그래서 Crystal Reports를 제거한 후 하나의 설치자로 모두 교체했습니다. 새 설치 프로그램은 선택한 환경을 Setup.config에 작성하여 파일 속성으로 참조합니다.여기를 봐).
"파일"속성은이 새 설치 프로그램을 사용하여 구성 파일에 새롭습니다. 내가 실행중인 문제는 이전 설치에서 client.exe.config 파일을 수정 한 다음 새 설치 프로그램을 실행하면 "파일"속성으로 구성 파일이 업데이트되지 않는다는 것입니다.
파일을 업데이트하도록 강요 할 수있는 방법이 있습니까? 내가 무언가를 오해하지 않는 한 다른 설치 프로그램이기 때문에 removepreviousversions는 정확히 작동하지 않습니다. 아마도 작동하는 나의 현재 아이디어는 OnbeForeInstall 메소드에 코드를 추가하여 이전 client.exe.config의 백업 파일로 이름을 바꾸는 것입니다. 그러나 설치 프로그램 자체 내에 더 간단한 솔루션이 있어야합니다. 어떤 아이디어?
편집하다: 기존 구성 파일을 client.exe.config.old로 호출하기 전에 기존 구성 파일을 바꾸기 시작했습니다. 그것은 파일의 이름을 바꾸었지만 새 파일을 쓴 적이 없습니다.
해결책
Windows Installer는 수정 된 파일을 업데이트하지 않습니다.
비전식 파일은 사용자 데이터입니다. 수정 된 날짜가 컴퓨터의 파일 생성 날짜보다 늦은 경우 사용자 사용자 정의가 삭제되므로 파일을 설치하지 마십시오. 수정 및 작성 날짜가 동일하면 파일을 설치하십시오. 생성 날짜가 수정 된 날짜보다 늦은 경우 파일은 수정되지 않은 것으로 간주되며 파일을 설치하십시오.
몇 가지 옵션이 있습니다.
파일을 제자리에 수정하는 사용자 정의 작업을 포함하십시오. 이것은 A 일 수 있습니다 스크립트 또는 .NET 코드.
당신이 말한대로 행동하십시오 - 기존 파일을 방해하지 마십시오. 설치 프로그램은 멈추지 않습니다. 그러나 상상하는 순서대로 발생하는지 확인해야합니다. 너는 필요할지도 모른다 범고래 주문을 알아 내기 위해.
작성 날짜를 "오늘"으로 설정하려면 사용자 정의 옵션을 포함하십시오. 이것은 스크립트 사용자 정의 조치를 사용하여 정말 간단해야합니다. Scripting.FilesyStemObject. 그런 다음 Windows Installer가 덮어 쓰게됩니다.