2012-03-22 7 views
2

WiX 기반 설치의 일환으로 사용자에게 등록 정보 값 (JAVA_LOC)을 입력하도록 요청해야합니다.이 값은 레지스트리 값으로 저장합니다 (이는 내가 작성하고자하는 디렉토리가 아닙니다. 그러나 게시 이벤트 = "SetTargetPath"를 사용하는 경우 링커에서는 JAVA_LOC을 구성 요소 계층 구조의 디렉토리로 선언해야한다고 말합니다. 내가 그렇게한다면, 나는 그 길을 기록 할 수있다. 그러나 이후에 '변경'설치를 실행하면 새 경로 값이 무시되고 JAVA_LOC가 강제로 작성된 JAVA_LOC 디렉토리 위치로 재설정됩니다.WiX - 설치 디렉토리가 아닌 경로를 확인 하시겠습니까?

디렉토리가 아닌 사용자가 입력 한 경로의 유효성을 검사하는 방법은 무엇입니까? 기억하기를, 나는 단지 그것을 레지스트리에 저장하려고하고있다. 정말로 그것에 대한 디렉토리를 만들지는 않는다.

데이브

답변

3

SetTargetPath 제어 이벤트는 인수로 디렉토리 테이블에서 기본 키를 취할 수 있습니다. 이 디렉토리를 사용하려면이 디렉토리를 정의해야합니다. dirctory에는 CreateFolder 항목 및/또는 File 리소스가 있어야한다는 내용은 없습니다. 나는이 디렉토리 아래의 레지스트리 데이터로 구성 요소를 중첩시킬 수 있다고 생각하는데, 디렉토리를 만들지 않고도 모두 작동해야합니다.

+0

고마워요, 크리스토퍼. 그거 알아두면 좋을거야. 예. 디렉토리가 생성되지 않았습니다. 문제는 마지막 부분입니다. 첫 번째 설치에서 JAVA_LOC 값을 레지스트리로 올바르게 가져옵니다. 다음에 '변경'설치를 수행하고 UI 값을 변경하면 실행될 때 로그에 새로운 값이 무시되는 것을 볼 수 있습니다. JAVA_LOC는 디렉토리 트리 loc으로 설정되고 실행 중에 레지스트리에 저장됩니다. 디렉토리 선언에는 '보안'이 없습니다. 어떻게 JAVA_LOC 속성을 무시하지 않도록 할 수 있습니까? –

+0

아. 디렉토리 속성은 안전하다고 표시 할 필요가 없습니다. 자동입니다. 문제는 디렉토리를 생성하지 않고 디렉토리에 아무 것도 설치하지 않았기 때문입니다. MSI는 디렉토리의 위치를 ​​기억하지 않습니다. 무언가가 설치되면 끈끈한 (불변)이됩니다. ControlEvent를 중계하는 대신 (UI는 복구 중에 실행되지 않습니다.) CostInitialize 전에 Type51 CA를 사용하거나 CostFinalize를 설치 한 후에 Type35 CA를 사용해야 JAVA_LOC 디렉토리 속성이 기본 값이 아닌 원하는 값을 갖게됩니다. 값. y –

+0

또한 레지스트리의 값을 CA 입력으로 다시 읽어야합니다. 자세한 내용은 다음을 참조하십시오. http://robmensching.com/blog/posts/2010/5/2/The-WiX-toolsets-Remember-Property-pattern –

관련 문제