2010-01-12 87 views
5

有人告诉我,WIX中的CustomAction有一种方法可以在控制台日志中显示输出。我包含一个名为XmlPreprocess.exe的.exe来操纵我的web.config,基于名为SettingsFileGenerator.xml的文件中的参数,WIX CustomAction - 如何在安装/日志中获取更多信息

我以这样的方式运行: msiexec/i bin \ Debug \ TFBIC。 RCT.WCFWebServicesWIXSetup.msi/L * V “C:\日志\ WixInstall01.log”

这是我的维克斯构建文件:

<CustomAction Id="**SAMPLE_CONFIG**" BinaryKey="XMLPREPROCESS" ExeCommand="/i:&quot;[INSTALLLOCATION]web.config&quot; /x:&quot;[INSTALLLOCATION]SettingsFileGenerator.xml&quot; /e:QA /d:ServiceLocation=[SERVICELOCATION]" Execute="deferred" /> 
    <Binary Id="XMLPREPROCESS" SourceFile="../TFBIC.RCT.WCFWebServices/RequiredBins/XMLPreprocess.exe" /> 
    <InstallExecuteSequence> 
     <Custom Action="SAMPLE_CONFIG" After="StartServices"><![CDATA[NOT Installed]]></Custom> 
    </InstallExecuteSequence> 

安装日志显示此:

Action 15:22:27: StartServices. Starting services 
Action start 15:22:27: StartServices. 
MSI (s) (58:CC) [15:22:27:898]: Note: 1: 2205 2: 3: ServiceControl 
MSI (s) (58:CC) [15:22:27:898]: Note: 1: 2228 2: 3: ServiceControl 4: SELECT `Name`,`Wait`,`Arguments`,`Event`, `Action` FROM `ServiceControl`, `Component` WHERE `Component_` = `Component` AND (`Action` = 0 OR `Action` = 1 OR `Action` = 2) 
Action ended 15:22:27: StartServices. Return value 1. 
MSI (s) (58:CC) [15:22:27:899]: Doing action: SAMPLE_CONFIG 
Action 15:22:27: SAMPLE_CONFIG. 
Action start 15:22:27: **SAMPLE_CONFIG**. 
SAMPLE_CONFIG: 
Action ended 15:22:27: **SAMPLE_CONFIG**. Return value 1. 

这是我第一次尝试WIX,所以请忍受我的无知。

感谢

UPDATE:

这从另一个论坛报价 - 但他没有说明它是如何工作的,他似乎并不常回来看看。

维克斯具有捕获 控制台输出,坚持它 直接进入详细MSI日志,所以 这是我使用的自定义操作。

参考:http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId=79454

这将是他在谈论的工具? http://wix.sourceforge.net/manual-wix2/qtexec.htm 尝试它时出现此错误: 错误LGHT0103:系统找不到文件'wixca.dll'。 我已搜索整个磁盘的这个.dll,并找不到它。

回答

8

要在安装msi时启用所有可能的日志记录,请使用/lvx* logfile.txt选项。但是,即使这样也不会记录作为自定义操作调用的命令行应用程序的STDOUT和STDERR输出。

如果您自己编写了自定义操作,则可以向其添加此类日志记录。例如,wix附带的DTF库有一个方便的方法,您可以调用。有关更多信息,请参阅c:\program files\windows installer xml v3\doc\dtf.chm,“编写托管自定义操作”主题。

如果您还没有编写应用程序,则可以编写自定义操作来包装它。这样的包装可以使用.NET Process class来调用可执行文件,读取StandardErrorStandardOutput流,并使用上述的Session.Log方法记录所有内容。

编辑:我不知道任何将控制台输出发送到日志的standard custom action in wix。试试wix-users mailing list

+0

看到我原来的问题更新,有人告诉我有一个捕获控制台输出的自定义操作。任何想法如何找到它。我会再去google一些。我没有写它,它是CodePlex中的XmlPreprocess。 – NealWalters 2010-01-13 15:50:16