首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WIX属性值代换与CAQuietExec

WIX属性值代换与CAQuietExec
EN

Stack Overflow用户
提问于 2010-01-14 20:55:14
回答 1查看 3.4K关注 0票数 4

到目前为止,我还没有发现WIX是我最喜欢的最直观、最容易使用的语言/系统。

我创建了一个自定义对话框,输入了数据,并在安装日志中看到了值。

代码语言:javascript
复制
MSI (c) (C8:A4) [14:42:37:137]: PROPERTY CHANGE: Modifying VARRADIOBUTTONENVIRONMENT property. Its current value is 'Dev'. Its new value: 'QA'.
MSI (c) (C8:A4) [14:42:41:448]: PROPERTY CHANGE: Modifying VARTEXTSETTINGSFILENAME property. Its current value is 'C:\Path\SettingsFileGenerator.xml'. Its new value: 'Test1234.txt'.

稍后,当到了使用这个值的时候,我看到如下:

代码语言:javascript
复制
Action ended 14:42:43: InstallFinalize. Return value 1.
MSI (s) (BC:F8) [14:42:43:676]: Doing action: QtExec1
Action 14:42:43: QtExec1. 
Action start 14:42:43: QtExec1.
MSI (s) (BC:F4) [14:42:43:682]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIC4A7.tmp, Entrypoint: CAQuietExec
MSI (s) (BC!BC) [14:42:43:690]: PROPERTY CHANGE: Deleting QtExecCmdLine property. Its current value is '"[INSTALLLOCATION]XmlPreprocess.exe /i:web.config /e:[VARRADIOBUTTONENVIRONMENT] "'.
CAQuietExec:  Error 0x8007007b: Command failed to execute.
CAQuietExec:  Error 0x8007007b: CAQuietExec Failed
Action ended 14:42:43: QtExec1. Return value 3.
Action ended 14:42:43: INSTALL. Return value 3.
Property(S): StartIIS7ConfigTransaction = ScaConfigureIIs

最后,当它转储所有属性时,它显示如下:

属性(S):VARRADIOBUTTONENVIRONMENT = QA属性(S):VARTEXTSETTINGSFILENAME = Test1234.txt属性(S):VerifyCurrentPropValueOfEnv = VARRADIOBUTTONENVIRONMENT

这是我的代码片段。我只是将属性ids更改为全大写,并根据我看到的另一篇文章添加了secure="yes“。我已经尝试过了,不管有没有Secure=,“是的”。

代码语言:javascript
复制
        <Property Id="VARRADIOBUTTONENVIRONMENT" Secure="yes">Dev</Property>
        <Property Id="VARTEXTSETTINGSFILENAME" Secure="yes">C:\Path\SettingsFileGenerator.xml</Property>

        ...then later... 

                <Property Id="VerifyCurrentPropValueOfEnv" Value="[VARRADIOBUTTONENVIRONMENT]"/>
        <Property Id="QtExecCmdLine" Value="&quot;[INSTALLLOCATION]XmlPreprocess.exe /i:web.config /e:[VARRADIOBUTTONENVIRONMENT] &quot;"/>
        <CustomAction Id="QtExec1" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check"/>


<InstallExecuteSequence>
<Custom Action="QtExec1" After="InstallFinalize"><![CDATA[NOT(Installed)]]></Custom>
</InstallExecuteSequence>

在安装结束时,我看到XmlPreProcess.exe安装在安装目录中。

问题:

  1. 是否做错了什么来获取要替换的值?
  2. 我使用CAQuietExec是因为有人告诉我它会记录更好的错误,并将命令窗口的输出回显到安装日志。我并不在乎没有看到命令窗口。我不知道如何找出这意味着什么:"CAQuietExec: Error 0x8007007b:命令执行失败“。我无法判断这是否是试图调用XmlPreprocess.exe的WIX错误,或者它是否进入XmlPreprocess,然后抛出错误。

谢谢,

尼尔·沃尔特斯

EN

回答 1

Stack Overflow用户

发布于 2010-01-14 21:42:43

查看日志摘录,我想我可以看到问题所在,您已经引用了整个命令行,尝试如下:

代码语言:javascript
复制
<Property Id="QtExecCmdLine" Value="&quot;[INSTALLLOCATION]XmlPreprocess.exe&quot; /i:&quot;[INSTALLLOCATION]web.config&quot; /e:[VARRADIOBUTTONENVIRONMENT]"/>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2067482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档