我已在此处发布了一个相关问题:Wix: Managed BA command line not effective,这是关于升级期间传递的命令行。
现在我尝试探索它如何解释命令行。这是我的run方法:
protected override void Run()
{
string cmdOptions = string.Empty;
this.Engine.Log(LogLevel.Verbose, "Launching custom TestBA UX");
Debug.WriteLine("Command.Display: {0} Command.Action: {1}", this.Command.Display.ToString(), this.Command.Action.ToString());
Environment.Exit(1);
}
据我所知,Wixdba会消化自己的命令行选项,并将额外的内容传递给我们的Managed Bootstrapper应用程序。从上面提到的帖子,这行来自日志:
[1A44:1E54][2014-02-24T17:47:22]i301: Applying execute package: {f1d57671-5e3d-4be7-908f-5a47e72737d9}, action: Uninstall, path: C:\ProgramData\Package Cache\{f1d57671-5e3d-4be7-908f-5a47e72737d9}\BootstrapperSetup.exe, arguments: '"C:\ProgramData\Package Cache\{f1d57671-5e3d-4be7-908f-5a47e72737d9}\BootstrapperSetup.exe" -uninstall -quiet -burn.related.upgrade'
显示它正在将-uninstall和-quiet传递给BootstrapperSetup.exe,它位于缓存中,即已经安装在那里。
以下是传递给Bootstrapper的命令行选项的结果:
C:\ bin \ Debug> BootstrapperSetup.exe -quite -uninstall
Command.Display:Full,Command.Action:Uninstall
C:\ bin \ Debug>> BootstrapperSetup.exe -q -uninstall
Command.Display:无Command.Action:卸载
C:\ bin \ Debug>> BootstrapperSetup.exe -q -u
Command.Display:无Command.Action:安装
摘要:从上面的测试中,似乎
虽然在知道这个之后,我可以在我的Managed Bootstrapper中解析-quite和-u,但我想知道,如果它是一个Bug或者我在这里做错了什么
祝你好运
答案 0 :(得分:2)
这不是一个错误。你必须正确拼写,这不是'完全'。我相信命令行的意图是接受msiexec接受的内容。 msiexec不使用-u进行卸载(或者就我所知的任何事情而言),但是使用了-q。
不幸的是,关于此的文档并不是很好。你必须阅读WiX源代码以获得很多这样的东西。您将在src / burn / engine / core.cpp(ParseCommandLine方法)中找到引擎将为您解析的确切内容。