【发布时间】:2014-09-09 07:54:41
【问题描述】:
我在另一个进程中启动 msiexec 并等待退出:
var p = new Process
{
StartInfo =
{
FileName = "msiexec",
Arguments = string.Format("/i \"{0}\" /qb", @"c:\install\setup.msi"),
Verb = "runas"
}
};
p.Start();
p.WaitForExit();
int exitCode = p.ExitCode;
如果 setup.msi 之前没有安装,它会安装到静默模式并返回 0。正常。
但如果 setup.msi 已经安装(第二次启动此代码),安装不会开始并返回代码 0 - 成功结果!但实际上,文件并没有建立,因为产品已经安装好了。我如何确定这种情况?
【问题讨论】:
-
如果该产品已安装,您应该得到 1638 作为错误代码,您是否尝试手动安装此 MSI 并查看您是否获得 产品已经存在 消息?
-
当我手动开始安装时,我看到该产品已安装。有两个选项:修复和删除。但是,如果我在静默模式下使用参数启动 msiexec 返回成功代码 (0)。
-
尝试 /passive 打开 msiexec
-
添加了关于如何使用 MSI COM API 以 2 行检查安装状态的答案。
标签: c# .net windows-installer