2012-11-08 101 views
2

我有要求更新配置文件的命令行提供的参数由于某种原因,该文件没有更新,所以我写了一个小工具应用程序在c#中由msiexec开始。其目的是获得命令行params到这个应用程序,以便它会打开配置文件并在安装过程中更新它。将msiexec命令行参数传递给由msiexec启动的子进程

我的应用程序被执行很好,但尝试读取父进程时(MSIEXEC)命令行参数,可以我得到类似C:\windows\msiexec /V不是那些我msiexec命令行上指定(我甚至不使用/V

关于可能是什么问题的任何想法?如果你有更好的方法来处理这个请建议。

谢谢。

更新:
很抱歉的混乱,我用维克斯安装程序和予启动维克斯产生的.msi在命令行上如下面在例如。

C:\> msiexec /I foo.msi ARG1="v1" ARG2="v2" 

ARG1ARG2在维克斯安装脚本定义。

我正在寻找的是访问命令行通过将由MSIEXEC(应用程序在维克斯安装脚本指定为自定义操作)来启动一个小的应用PARAMS ARG1="v1"ARG2="V"的方式。

理想的情况下,当我使用xmlFile(试过xmlConfig为好),我的WiX的安装脚本应该能够更新v1v2但它不会发生这样写道,应该能够阅读的应用我的配置文件v1 & v2并写入配置文件。

使用xmlFile我得到以下错误:

ExecXmlFile: Error 0x8007006e: failed to load XML file: Error 25531. Failed to open XML file , system error: -2147024786 MSI (s) (E4!54) [18:11:36:714]: Product: -- Error 25531. Failed to open XML file , system error: -2147024786 –

没有得到任何有意义的信息。我使用msiexec参数/l*v来生成日志记录。


日志摘录:

其实xmlFile应该做我的要求,但同时使用它,我得到以下错误。任何帮助,将不胜感激。

MSI (s) (E4:00) [18:11:32:110]: Executing op: ActionStart(Name=ExecXmlFile,,) Action 18:11:32: ExecXmlFile. 
MSI (s) (E4:00) [18:11:32:111]: Executing op: CustomActionSchedule(Action=ExecXmlFile,ActionType=3073,Source=BinaryData,Target=ExecXmlFile,CustomActionData=1030//cloudRecognition/connectiontype130//cloudRecognition/connectionaddress192.168.128.59;192.168.128.261030//cloudRecognition/connectionport50001;50001) 
MSI (s) (E4:DC) [18:11:32:113]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIA419.tmp, Entrypoint: ExecXmlFile 
MSI (s) (E4:EC) [18:11:32:113]: Generating random cookie. 
MSI (s) (E4:EC) [18:11:32:115]: Created Custom Action Server with PID 10104 (0x2778). 
MSI (s) (E4:68) [18:11:32:402]: Running as a service. 
MSI (s) (E4:68) [18:11:32:403]: Hello, I'm your 32bit Elevated custom action server. 
ExecXmlFile: Error 0x8007006e: failed to load XML file: 
Error 25531. Failed to open XML file , system error: -2147024786 
MSI (s) (E4!54) [18:11:36:714]: Product: -- Error 25531. Failed to open XML file , system error: -2147024786 

CustomAction ExecXmlFile返回实际的错误代码1603(注意,这可能不是100%准确,如果翻译沙箱里面发生)

回答

1

你传递的参数为MSI属性?如果是,那么你可以从MSI数据库中读取它们。检查:

http://www.alteridem.net/2008/05/20/read-properties-from-an-msi-file/

我猜你设置环境特定的应用性能配置文件?如果是这样,为什么你没有在配置文件中定义的所有属性,并使应用程序足够聪明以阅读正确的属性(通过检查环境)?我会这样做。

以上评论仅基于您提供的有限信息。你会有自己的理由这样做:)

+0

对不起,我正在使用WiX安装程序,并在命令行上启动WiX生成的.msi,如下所示。 – user1810084

+0

有关更多详细信息,请参阅原始问题的更新,并告诉我您是否需要更多详细信息。感谢您的帮助 – user1810084

+0

对不起,我应该在这里发布它,但没有任何字符允许我发布它作为我自己问题的答案。请看看和任何帮助,将不胜感激。谢谢。 – user1810084

1

在我看来,你需要添加一个CustomAction到你的安装过程。 根据您的要求,您可能需要两种或只需一种。

  1. 更新配置文件可以使用XmlFile CustomAction来更改修改任何XML文件。
  2. 要启动Quiet Execution CustomAction

我相信,这将允许您在安装过程中更改配置文件的值。你可以找到一个很好的介绍CustomActions和他们的类型here。看看类型2的CustomAction。


在回答部分编辑后续问题:

当在CA计划在安装过程中推出?
你有安装的日志文件吗?


重新编辑

没有代码或有关安装过程的详细信息,我真的不能帮助更多。

有益的信息将是:

  1. 凡在安装顺序是CA推出?
  2. 您使用什么WiX元素来更改文件中的值。
  3. 您是否尝试创建一个安装程序,只执行您遇到问题的部分,以隔离此行为。
+0

CA计划在安装后启动。 – user1810084

+0

是的,我复制的是来自日志文件。即自定义动作服务器。 ExecXmlFile:错误0x8007006e:未能加载XML文件:错误25531.未能打开XML文件,系统错误:-2147024786 MSI(s)(E4!54):产品: - 错误25531 。无法打开XML文件,系统错误:-2147024786 – user1810084

+0

您确定该文件已被复制? – CheGueVerra

相关问题