2010-01-14 46 views
3

到目前为止,我没有发现WIX是我最喜欢的最直观,最易用的语言/系统。WIX属性值替换和CAQuietExec

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

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'. 

后来,当谈到时间使用我看到这个值:

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]

这是我的代码片段。我刚刚将物业标识更改为全部大写,并在我看到的另一个帖子的基础上添加了secure =“yes”。我已经尝试过,没有Secure =“是”。

 <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:错误0x8007007b:命令执行失败。”。我不知道这是否是尝试调用XmlPreprocess.exe的WIX错误,或者它是否进入了XmlPreprocess,然后抛出错误。

感谢,

尼尔·沃尔特斯

回答

8

查看日志提取物,我想我可以看到这个问题,你所引用的整个命令行,试试这个:

<Property Id="QtExecCmdLine" Value="&quot;[INSTALLLOCATION]XmlPreprocess.exe&quot; /i:&quot;[INSTALLLOCATION]web.config&quot; /e:[VARRADIOBUTTONENVIRONMENT]"/> 
+0

我觉得我厌倦了我的几十个排列组合中的一个,但现在再试一次。谢谢! – NealWalters 2010-01-14 22:45:38

+0

谢谢,它让它运行!现在我怎么能确定我是否传递了适当的变量呢? – NealWalters 2010-01-14 23:03:03

+0

@Neal,你应该能够分析日志,并从那里:) – saschabeaumont 2010-01-17 23:01:33