代码改变世界

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

  stoneniqiu  阅读(1095)  评论(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());
            }
复制代码

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

 

 

 

 

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示