2011-09-07 5 views
1

나는 큰 문제가있다 :업데이트 설치 : app.config를 저장하는 방법?

나는 오래된 응용 프로그램 인 App1.0.exe가있다. 이 응용 프로그램에는 App1.0.exe.config (응용 프로그램 구성)라는 파일이 있습니다. 이제 버전 2.0을 만들었습니다. 새로운 버전으로 Appconfig에 다른 Appsettings가 있습니다. 내 질문은 : 업데이트 설치를 만들 때 이전 Appconfig를 어떻게 저장할 수 있습니까?

이 시도의 문제를 해결하기 위해이 실패

:

- 읽기를 BeforeInstall 이벤트와 기존의 설정에서, 컨텍스트 매개 변수에 저장하고 Afterinstall 이벤트에 새로운 설정에 작성합니다. - BeforeInstall이 새 구성을 읽습니다 (이전 구성이 삭제됨). - 새 Appconfig를 복사하지 않지만 파일 이름을 다른 이름으로 복사하십시오. 새로운 appconfig를 포함하는 AppConfigUpdate.config. afterinstall 이벤트에서 File.Move()를 사용하여 이전 Config를 저장합니다. 이제 어디 갔지 있습니다

-Appconfig.exe.config_Original

-AppconfigUpdate.config

보다 내가 .config_Original을 읽고 AppConfigUpdate.config의 매개 변수를 작성하고 Appconfig.exe이 이름을 바꿉니다. config

내 문제는 RemoveExistingProducts라는 사용자 지정 동작을 실행 한 후 실행되는 표준 작업이 msi에 있다는 것입니다. 이제는 설치 프로그램을 디버그 할 때 내 커스터마이징이 끝나면 이전 구성 인 .config_original과 새 구성 .config가 이전 구성의 올바른 매개 변수와 함께 있음을 알 수 있습니다. 하지만 내 사용자 지정 작업 후에 설치 프로그램은 .config 파일을 삭제하고 .config_original 파일 만 남아 있습니다.

나는 RemoveExistingProducts가 업데이트 패키지와 함께 제공되지 않은 모든 파일을 삭제한다고 생각합니다. 하지만 원래 구성을 덮어 쓰고 모든 매개 변수가 손실되기 때문에 .config를 전달할 수 없습니다.

저는이 문제에 3 일 이상을 일하고 있습니다. 정말 도움이 필요합니다. 이 문제를 해결하는 방법에 대한 아이디어가 부족합니다. 여러분 중 누구라도 비슷한 문제가 있습니까?

죄송합니다. 감사합니다.

+0

왜 이전 App.config를 저장해야합니까? 사용자가 변경 한 모든 설정이 AppData의 user.config에 저장되어 있기 때문에 V1을 배포 한 이후로 어떤 값 으로든 값을 변경해서는 안됩니다. – ChrFin

+0

왜 안 되니? 사용자가 v1을 설치 한 이유 v1에서와 동일한 설정이있을 때 v2를 새로 구성해야하는 이유는 무엇입니까? 그래, 내가 설정을 변경해서는 안된다, 그것은 큰 실수였다 : (.하지만 문제는 : 그것은 happend 그리고 지금 나는이 문제를 해결하려고 노력하고있다. 문제는 다른 프로그램에 대한 몇 가지 경로가있다. 차이점이 있습니다 – Manuel

답변

0

아마도 설치 프로그램의 동작을 해결할 수 있습니까?

설치 중에 구성을 다시 쓰는 것이 아니라 응용 프로그램이 시작시 구성이 "버전 1"형식인지 테스트 할 수 있습니다. 그렇다면, 그 시점에서 업데이트를 수행합니다.

여기에 app.config를 업데이트하는 데 대한 자세한 내용 (이전이지만 유효합니다)이 http://geekswithblogs.net/akraus1/articles/64871.aspx입니다.

+0

좋은 소리는 있지만 새 설치 프로그램에서이 문제를 해결하기를 바랍니다. 마비 나는 영혼을 발견합니다. 그렇지 않으면이 문제를 해결할 것입니다. 감사합니다 – Manuel

2

올바른 방법은 두 개의 사용자 지정 작업을 사용하여 이전 구성 파일을 백업하고 복원하는 것입니다. 백업 사용자 지정 작업은 RemoveExistingProducts 작업 전에 실행됩니다. InstallFiles 이후에 사용자 지정 복원 작업이 실행됩니다. 간단한 스크립트 사용자 지정 작업으로 작업을 수행 할 수 있습니다.사용자 지정 작업에

자세한 내용

은 참조하십시오

http://msdn.microsoft.com/en-us/library/aa368066(VS.85).aspx

불행하게도 비주얼 스튜디오 설정이 좋은 스케줄링 지원 사용자 지정 작업이 없습니다. 다른 무료 또는 상용 msi 제작 도구를 사용해야합니다.

+0

이 아이디어는 훌륭하지만 문제는 : config를 출력으로 설정하면 이전 설정을 저장하기 전에 새 설정을 덮어 씁니다. config.exe 파일을 저장하고 exe.config로 이름을 바꿉니다. msi 설치 프로그램은 이전 설정을 삭제합니다. – Manuel

+0

대신 이름을 바꾸는 대신 config 파일을 다른 위치로 이동해야합니다 (예 : Temp 폴더). RemoveExistingProducts 전에 백업 사용자 지정 작업을 예약해야합니다. – Ciprian

+0

아니요 문제가 있습니다. 이전 구성 파일 Appconfig.exe.con을 저장합니다. 무언가를 Appconfig.exe.config_original로 이름을 바꾸면 AppconfigUPDATE.exe.config의 이름을 Appconfig.exe.config로 바꾸기 때문에 .exe.config 및 .exe.config_original이 있습니다. 내 사용자 지정 작업이 두 구성을 끝내면 설치를 디버깅 할 때 볼 수 있습니다. 하지만 내 사용자 지정 작업 후 Standart 작업 RemoveExistingProducts 생각하고 새로운 Appconfig.exe.config 파일을 새 설치 함께 배달되지 않기 때문에 Appconfig.exe.config (새 구성) 삭제하십시오. 이 문제를 해결할 수 없습니다. – Manuel

관련 문제