[英]Change the installation based on the OS language in Wix Installer
我一直在使用Wix安裝程序來創建安裝程序,安裝程序在安裝期間注冊了一個端口(使用netsh.exe)。 一切都很好。 但后來我嘗試在法語的Windows 7操作系統上安裝該應用程序...安裝程序無法注冊該端口,因為netsh命令是為en-US編寫的。 以下命令在en-US機器上正常工作:
netsh.exe http添加urlacl url = http:// +:6700 / Demo101 / user = \\ users但在fr-FR OS上失敗。
對於fr-FR我需要跑
netsh.exe http add urlacl url = http:// +:6700 / Demo101 / user = \\ utilisateurs
我在Wix項目中做了以下更改:
<?define langLocale = [OSINSTALLEDLOCALE]?>
<?if $(var.langLocale) = "00000409"?>
<!-- Firewall exception -->
<CustomAction Id="ListenerServiceAddReservation"
Execute="deferred"
Impersonate="no"
Directory="INSTALLLOCATION"
ExeCommand="[SystemFolder]netsh.exe http add urlacl url=http://+:6700/Demo101/ user=\users"
Return="asyncWait" />
<?else?>
<CustomAction Id="ListenerServiceAddReservation"
Execute="deferred"
Impersonate="no"
Directory="INSTALLLOCATION"
ExeCommand="[SystemFolder]netsh.exe http add urlacl url= http://+:6700/Demo101/ user=\utilisateurs"
Return="asyncWait" />
<?endif?>
但是這不起作用,因為它沒有得到值“00000409”並且總是進入法國和機器在en-US的其他條件。
有什么幫助嗎?
使用本地化的Wix屬性(自定義操作)來解析正確的名稱,請參閱doc: http : //wixtoolset.org/documentation/manual/v3/customactions/osinfo.html (網站現在已關閉,因此我無法確認正確的鏈接)或谷歌WixQueryOsWellKnownSID
在您的示例中,我假設您指的是“用戶”組,以便讓它工作添加PropertyRef
<PropertyRef Id="WIX_ACCOUNT_USERS"/>
然后在自定義操作中使用[WIX_ACCOUNT_USERS]
屬性,該屬性將解析以更正內置Windows用戶和組的組名。
<CustomAction Id="ListenerServiceAddReservation"
Execute="deferred"
Impersonate="no"
Directory="INSTALLLOCATION"
ExeCommand="[SystemFolder]netsh.exe http add urlacl url=http://+:6700/Demo101/ user=[WIX_ACCOUNT_USERS]"
Return="asyncWait" />
有了這個,您將不需要為不同的區域設置具有不同的自定義操作。
<?if?>
和<?else?>
語句是預處理程序的東西,它們在編譯時解析。 那不行。 這里的關鍵是內置用戶和組的SID是不變的,因此您需要使用S-1-5-32-545 。
在WiX v3.10 / v4.0及更高版本中,您可以使用WixHttpExtension :
<http:UrlReservation Url="http://+:6700/Demo101/">
<http:UrlAce SecurityPrincipal="*S-1-5-32-545" Rights="register" />
</http:UrlReservation>
使用netsh:
netsh.exe http add urlacl url= http://+:6700/Demo101/ sddl= "O:BAG:BAD:(A;;GX;;;S-1-5-32-545)"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.