我在我的wix安装程序中编写了以下代码,用于更新XML文件中的语言,这在以下条件下正常工作:
1)全新安装 2)使用管理员权限进行升级(我使用的是msiexec / I" Tools.msi" / l * v D:\ InstallLog.txt)。
然而,当我在没有管理员权限的情况下运行/执行msi时(这是"更改"模式正在使用.... 我缺少什么),值是不更新总是设置为默认值:
<Property Id="LANGUAGE" Value="en-US" />
代码:
<util:XmlFile Id="LanguageConfig"
Value="[LANGUAGE]"
ElementPath="/configuration/appSettings/add[\[]@key='Language'[\]]"
Action="setValue"
File="$(var.ConfigFile)"
Name="value" Sequence="1" />
<util:XmlFile Id="MappingLanguageXML"
Value="[LANGUAGE]"
ElementPath="/MappedUsers/UsersList/UserID/LanguageCode"
Action="setValue"
File="$(var.UserMappingFile)" Sequence="1" />
非常感谢任何帮助。
答案 0 :(得分:1)
它被改变的事实暗示它可能不是特权问题。我怀疑情况是在安装时输入了另一种语言,但是你没有在任何地方保留它的值所以Change只使用默认值。不会自动记住属性,这就是WiX“记住属性”模式的用途。这可能是解决方案 - 保留LANGUAGE的安装时间值。它与运行任何程序没有什么不同 - 用户可能输入了变量中的内容并不意味着下次运行程序时变量将具有相同的值,除非您保存它。
答案 1 :(得分:0)
基于PhilDw指针,我通过修改属性
解决了这个问题<Property Id="LANGUAGE" Value="en-US" />
如下:
<Property Id="LANGUAGE" Secure="yes" Value="en-US">
<RegistrySearch Id="RememberLanguage" Root="HKLM"
Key="$(var.RegistryLoc)"
Name="Language" Type="raw" />
</Property>
通过保留注册表中的值,我可以在&#34;更改&#34;操作