2011-07-26 6 views
1

나는 사용자 지정 작업을 수행합니다. 사용자 지정 작업은 spesial 기능의 작업 상태가 "설치"인 경우 실행해야합니다. 이제 다음 조건을 사용하고 있습니다.재설치 중 CA 조건

(&ca_feature=3 AND NOT &ca_feature=2) OR (!ca_feature=3 AND PATCH) . 

수정 모드에서도 실행하고 싶습니다. 기능이 이미 설치되어 있고 사용자가 삭제하지 않으려는 경우. 내 조건 문자열에 OR (REINSTALL><ca_feature OR REINSTALL=ALL)을 추가하겠습니다. 하지만 작동하지 않는 것 같습니다. MSI가 어떤 상황에서 어떻게 작동하는지 가져올 수 없습니다. 이것이 바로 내 문제입니다. 하지만 나는 또한 인터넷에서 대답을 찾을 수 없습니다. 제발, 저의 잘못을 이해/잘못 이해해주세요. 고맙습니다.

답변

2

상태가 올바르게 보입니다. 기능을 다시 설치하려면 마지막 부분 인 REINSTALL이 참이어야합니다.

REINSTALL><ca_feature 대신 !ca_feature=3을 사용해도되지만 기능을 설치하면 CA가 실행됩니다. 가 설치되어 및 삭제 예정되어 있지 않은 경우 설치를 위해이 기능이 예약 될 때

(&ca_feature=3) OR (!ca_feature=3 AND NOT (REMOVE><ca_feature OR REMOVE=ALL)) 

그것은 CA를 실행하는 것, 또는 :


나는 당신의 상태가이 방법을 볼 수 있었다 생각합니다. 그것은 이미 더 나은 무슨 일이 일어나고 있는지 이해 3.


를 사용하여 MSI verbose logging 동일한 경우 &ca_feature 2와 동일 할 수 없기 때문에

첫 번째 괄호에서이 부분 AND NOT &ca_feature=2은 중복입니다. 다음과 같이 설치를 실행하십시오.

msiexec /i package.msi /l*vx log.txt 

기능 상태가 변경되거나 속성이 수정되면 로그에 메시지가 표시됩니다. 그러면 실제 값과 기대치를 비교할 수 있습니다. 변경 또는 제거 모드에서 실행하려면 /i 대신 다른 작동 스위치를 사용하십시오.

+0

감사합니다. Alexey. 나중에 설치 프로그램에서 change_mode를 활성화 할 때 상태를 시험해 봅니다. 궁금한 점은 : 기능 상태가 설치되어 있고 change_mode의 상태가 변경되지 않은 것입니다. REINSTALL = "NEWONEFEATURE"와 같을 것입니다. 그렇게 사용하면 정말 좋습니다! FEATURE = 3 말했던 것처럼. 많이 감사합니다. 지금 :) 그리고 안녕하세요 모스크바에서) – Nerielle