使用Wix开发本地化MSI安装包时添加用户至管理员组的方案咨询
可行解决方案
以下是两种经过实测可用的方案:
方案1:直接使用管理员组固定SID(最推荐,无需处理字符串)
所有Windows系统中内置管理员组的SID是永久固定值S-1-5-32-544,完全不受系统语言、区域设置影响,Wix的Util扩展支持直接通过SID指定组,代码可直接修改为:
<util:Group Id="Administrators" SID="S-1-5-32-544" />
无需修改其他原有配置,所有语言版本的Windows都能正常识别,是最简单稳定的解决方案。
方案2:自定义操作提取本地化组名(适用于必须处理变量的场景)
如果有特殊需求必须从[WIX_ACCOUNT_ADMINISTRATORS]变量中提取组名,可以通过简单的VBScript自定义操作实现:
- 首先在Wix项目中添加自定义操作定义,实现字符串拆分逻辑:
<CustomAction Id="ExtractAdminGroupName" Script="vbscript"> <![CDATA[ fullAdminAccount = Session.Property("WIX_ACCOUNT_ADMINISTRATORS") If InStr(fullAdminAccount, "\") > 0 Then localizedGroupName = Split(fullAdminAccount, "\")(1) Session.Property("LOCALIZED_ADMIN_GROUP") = localizedGroupName End If ]]> </CustomAction>
- 配置自定义操作的执行顺序,保证属性在组件安装前完成赋值:
<InstallExecuteSequence> <Custom Action="ExtractAdminGroupName" Before="InstallInitialize">NOT Installed</Custom> </InstallExecuteSequence>
- 最后将Group的Name属性替换为提取后的自定义属性即可:
<util:Group Id="Administrators" Name="[LOCALIZED_ADMIN_GROUP]" Domain="[ComputerName]" />
内容的提问来源于stack exchange,提问作者indiehjaerta
相关产品推荐
相关产品推荐

