代码改变世界

.Net下 自动执行MSI和EXE文件

2014-05-24 22:17  stoneniqiu  阅读(1089)  评论(0编辑  收藏  举报

MSI是安装文件,需要系统自带的msiexec.exe来执行

  var tempDir = @"D:\UploadFiles\SCADASetupWix.msi";
                var start = new ProcessStartInfo("msiexec.exe", "/i \"" + tempDir );
                start.WindowStyle = ProcessWindowStyle.Normal;
                start.CreateNoWindow = true;
                Process.Start(start);//.WaitForExit()

但在360下,会由警告弹出。认为自动安装是不安全的。 应该还有更好的方式。

在cmd中触发安装,也会弹出360警告。然后显示拒绝安装

对于msp文件,即更新文件,需要用update命令,但前提是客户端电脑已经安装了你们的产品,否则不能更新。(在cmd中可以直接用i命令可以执行)

  var tempDir = @"C:\Users\Administrator\Desktop\SCADA\Patch.msp";
                var start = new ProcessStartInfo("msiexec.exe", "/update  " + tempDir);
                start.WindowStyle = ProcessWindowStyle.Normal;
                start.CreateNoWindow = true;
                Process.Start(start);//.WaitForExit()

 

自动运行EXE文件,也会弹出警告。

  Process prc = new Process();
            try
            {
                prc.StartInfo.FileName = @"C:\Users\Administrator\Desktop\SCADA\setupok.exe";
                prc.StartInfo.UseShellExecute = false;
                prc.StartInfo.RedirectStandardError = true;
                prc.StartInfo.RedirectStandardOutput = true;
                prc.StartInfo.RedirectStandardInput = true;
                prc.StartInfo.CreateNoWindow = false;
                prc.Start();
            }
            catch (Exception exU)
            {
                if (!prc.HasExited)
                {
                    prc.Close();
                }
                throw new Exception(exU.Message.ToString());
            }

应该有静默的安装方式。继续寻找!