Wix-使用属性名称作为值时无法写入 XML 文件

Posted

技术标签:

【中文标题】Wix-使用属性名称作为值时无法写入 XML 文件【英文标题】:Wix- Unable to write to XML file when using Property Name as Value 【发布时间】:2015-05-13 02:24:12 【问题描述】:

我试图在安装过程中将值写入 XML 文件,该值来自用户在安装阶段填写的文本字段。 在我的安装程序 GUI 文件中,我有以下 EditField:

 <Control Id="LogEdit" Type="Edit" X="45" Y="155" Width="100" Height="18"  Property="LOGVALUE" Text="80" />

在我的 Product.WXS 中,我添加了一个新属性,如下所示:

   <Property Id="LOGVALUE" Secure="yes"/>
   <SetProperty Id="LOGVALUE" Value="" After="AppSearch">LogValue</SetProperty> 

然后我创建了一个新组件,如下所示:

<Component Id="LogComponent"
    Guid="87F682A6-1CC0-4E2D-9882-25D765478F94" Directory='ContentDir' NeverOverwrite='yes' Permanent='yes'>
  <File Id="Logconfig"
        DiskId="1"
        Name="log.xml"
        Source="..\bin\log.xml"
        Vital="yes"
        KeyPath="yes" />

  <util:XmlFile Id="SetKey3"
                Action="setValue"
                ElementPath="/log/appender[\[]@type='log4net.Appender.RollingFileAppender'[\]]/file/@value"
                Value="[LOGVALUE]"
                File="[#Logconfig]"
                SelectionLanguage="XPath"
                Sequence="1" />

</Component>

我还在 . 问题是安装后不会将任何内容写入 XML 文件,然而如果我将 Value="[LOGVALUE]" 替换为一些硬编码值,例如 Value=" TEST" 在 util:XmlFile 部分它工作。错误来自哪里的任何想法?

【问题讨论】:

【参考方案1】:

您在下面的 setproperty 中将 LOGVALUE 的值设置为“”,我相信通过将该值设置为空,将其设置为“[LOGVALUE]”或根本不设置它,因为 UI 是设置属性值

<SetProperty Id="LOGVALUE" Value="" After="AppSearch">LogValue</SetProperty>

【讨论】:

谢谢 :) 令人惊讶的是,我正在写入同一个 Product.WXS 中的另一个 XML 文件,并且我将 字段的值设置为“”,它按预期工作,但为此除非我设置 Value = "[LOGVALUE]",否则它不起作用。

以上是关于Wix-使用属性名称作为值时无法写入 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 WIX 中运行时为快捷方式动态分配名称

为我的应用程序运行 Wix 安装程序后,即使在删除文件夹后也无法创建/写入文件/文件夹

WIX - 在注册表中写入属性

基于用户选择的Wix条件注册表写入

Wix延迟自定义操作访问被拒绝

Wix:无法从Wix CustomAction调用DISM