명령 줄에서 전달 된 WIX 조건 특성이 작동하지 않습니까?
-
21-08-2019 - |
문제
명령 줄 인수를 통해 전달 해야하는 바로 가기를 설치할지 여부에 대한 속성이 있습니다. WXS 파일 내에서 속성을 설정할 때 조건이 작동하는 것처럼 보이지만 명령 줄을 통해 속성을 설정할 때는 무시되는 것 같습니다. 로그에서 나는 그들이 설정되고 있음을 알 수 있습니다.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTUPSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTMENUSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLDESKTOPSHORTCUT property. Its current value is '0'. Its new value: '1'.
그러나 바로 가기가 설치되지 않습니다.
또한 조건을 설정하려면 자신의 구성 요소에 있어야하기 때문에 더 이상 광고 된 바로 가기가 될 수없는 것 같습니다. 조건부로 광고 된 바로 가기를 어떻게 설치 하시겠습니까?
현재 바로 가기 코드 :
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0"/>
...
<Component Id="StartMenuShortcut" Guid="MY-GUID">
<Condition>INSTALLSTARTMENUSHORTCUT</Condition>
<Shortcut Id="StartMenuServerShortcut"
Directory="ProgramMenuDir"
Name="Application Name" WorkingDirectory="INSTALLDIR" Advertise="no"
Target="[!FileEXE]"
Icon="Icon.ico" />
</Component>
다른 바로 가기를 위해 반복
편집하다:
Sacha가 제안한 것을 시도하고 다음을 추가합니다.
<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>
이제 XML과 명령 줄 모두에서 0으로 설정하더라도 모든 단축키가 설치됩니다. 내가 지나가는 명령 줄은 다음과 같습니다.
msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb
값을 따옴표에 넣었지만 여전히 갈 수 없습니다. 여기에 표시되지는 않지만 Allusers 속성을 Allusers 또는 Allusers = "2"를 수행하여 Allusers 속성을 조작하는 데 성공했습니다. 나는 틀렸다.
해결책
여기에는 두 가지 질문이 있기 때문에 두 가지가 있습니다.
- 광고 된 바로 가기는 포인트 파일을 설치하는 동일한 구성 요소에 있어야합니다. Windows Installer가 구성 요소의 키패스에서 광고 된 해안을 가리키기 때문에 재평가됩니다. 따라서 선택적으로 설치하려는 경우 광고 된 해안을 사용할 수 없습니다.
나는있다 해안 및 패스 유효성 검사를 만드는 방법에 대한 블로그 게시물.
사용하는 속성은 설치 UI 프로세스에서 서버 측로 전달하려면 보안으로 표시되어야합니다. 그냥 그렇게하려면
u003CProperty Id="INSTALLSTARTMENUSHORTCUT" Secure="yes"/>
값 속성을 추가하지 않았다는 점에 주목하십시오. 값이 0이더라도 값을 지정하면 installStartMenUshorCut가 True로 평가됩니다. 빈/정의되지 않은 속성은 False이고 다른 값은 참입니다.