精华内容
下载资源
问答
  • QProcess:启动外部程序失败

    千次阅读 2019-03-15 11:57:09
    使用QProcess启动外部exe文件: QString exepath = QApplication::applicationDirPath() + "/Series/loads.exe"; if (QFileInfo(exepath).exists()) { if (m_acouProcess == nullptr) { m_...

    使用QProcess启动外部exe文件:

    QString exepath = QApplication::applicationDirPath() + "/Series/loads.exe";			
    if (QFileInfo(exepath).exists())
    {
    	if (m_acouProcess == nullptr)
    	{
    		m_process = new QProcess(this);
    	}
    	m_process->start(exepath);
    }

    很简单的几句代码,但是软件总是起不来,查资料发现是没有设置工作目录,加上下面两句就可以了:

    QString workpath = QApplication::applicationDirPath() + "/Series";				
    m_process->setWorkingDirectory(workpath);

     

    展开全文
  • 关于树莓派开机自启动python程序一共好几种方法,总结的比较全的是这篇文章: 【教程】树莓派程序开机自启动方法总结 主要有三种途径: 1.在/etc/rc.local文件中写入执行python程序的语句,因为开机会执行该文件。 2...

    解决思路:在终端中先确认你的py文件可以执行

    关于树莓派开机自启动python程序一共好几种方法,总结的比较全的是这篇文章:

    【教程】树莓派程序开机自启动方法总结

    主要有三种途径:

    1.在/etc/rc.local文件中写入执行python程序的语句,因为开机会执行该文件。

    2.将程序注册为服务启动。

    3.通过桌面启动,即在/home/pi/.config/目录下新建一个名为 autostart 的文件夹,新建xxx.desktop文件,写入执行语句。

    以上三点具体操作请看所附链接教程。

    说实话,最开始我将三种方法都试了一遍,但全部失败。

    解决方案如下

    我的错误在于python程序本身,各位如果没有按照上述教程只是建立一个test.py,而和我一样直接操作了自己需要启动的py文件,那么一定要在终端执行以下语句:

    python /home/pi/yourPy.py &
    

    & 代表将该程序在后台运行
    如果你的命令需要长时间运行(例如死循环)或者运行后不能退出,那么你必须确保在命令的最后添加“&”符号让命令运行在其后台。

    由于种种原因,比如依赖包安装位置、数据库路径是相对路径等,本身在ide中执行正常的py程序,在终端执行时会出现种种错误,修改好所有bug,再次在终端执行无误。

    即可通过第一种方法在/etc/rc.local中添加相应执行语句完成开机自动运行。

    需要注意

    1. 在rc.local文件中应写为
      su pi -c “python3 /home/pi/yourPy.py &
      su命令是指定在pi用户下执行这条命令,-c 表示执行完这条命令之后恢复原来的用户。
    2. 写在 exit 0之前,在此之前添加的代码在启动时都会被执行,执行效果和在终端中执行一样。
    展开全文
  • 启动时,根据主程序本地的版本文件(LocalVersion.xml),拿到远程更新地址,比较远程配置的版本文件(ServerVersion.xml) 如果有新版本,则判断更新程序是否位于系统盘,且是否为管理员身份运行 如果位于系统盘...

    桌面应用更新程序
    启动时,根据主程序本地的版本文件(LocalVersion.xml),拿到远程更新地址,比较远程配置的版本文件(ServerVersion.xml)
    如果有新版本,则判断更新程序是否位于系统盘,且是否为管理员身份运行
    如果位于系统盘,且不是管理员身份运行,则重新以管理员身份运行更新重启,操作系统会弹出账号控制提示给客户
    如果不是则打开主窗体,提示有新版本可以更新,是否下载更新
    (这个机制可以达到无论客户把程序装在系统盘还是其他盘都不会影响更新操作,并且如果客户不是装在系统盘,还可以免去每次检查更新系统都弹出"权限控制"的提示给客户)
    下载更新完成后,会自动删除下载的更新包,并且重新启动主程序

    在主程序启动时,同时启动更新程序,即可检查更新了,如果客户选中暂时不更新,下次打开还是会提示更新,如果想跳过该版本,那就得在取消的时候做点操作
    把远程最新版本号,修改到主程序本地的版本文件(LocalVersion.xml)

    底部有代码百度网盘下载地址

    首先更新程序的入口做运行身份检查

    static class Program
        {       
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                var temp = Update.HasNewVersion();
                if (Convert.ToBoolean(temp.result))
                {
                    if (Update.IsSystemPath() && ! Update.IsAdministrator())
                    {
                        Update.ReStartAppWithAdministrator();                  
                    }
                    else
                    {
                        Application.EnableVisualStyles();
                        Application.SetCompatibleTextRenderingDefault(false);
                        Application.Run(new Form1(temp));
                    }                
                }
                else
                {
                    Environment.Exit(0);
                }            
            }
        }
    

    然后是使用WebClient进行文件下载

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    using System.Xml.Linq;
    using System.Windows.Forms;
    using System.IO;
    using System.Diagnostics;
    using System.Security.Principal;
    
    namespace UpdateApp
    {
        public class Update
        {
            WebClient _client;
            public Update()
            {
                _client = new WebClient();
                _client.DownloadFileCompleted += (sender, args) => { DownloadFileCompleted?.Invoke(sender, args); };
                _client.DownloadProgressChanged += (sender, args) => { DownloadProgressChanged?.Invoke(sender, args); };
            }
            /// <summary>
            /// 在异步文件下载操作完成时发生。
            /// </summary>
            public Action<object, AsyncCompletedEventArgs> DownloadFileCompleted { get; set; }
            /// <summary>
            /// 在异步下载操作成功转换部分或全部数据后发生
            /// </summary>
            public Action<object, DownloadProgressChangedEventArgs> DownloadProgressChanged { get; set; }
            /// <summary>
            /// 根据名字 关闭进程
            /// </summary>
            /// <param name="ProcessName"></param>
            /// <returns></returns>
            public static bool CloseProcess(string ProcessName)
            {
                bool result = false;
                var temp = System.Diagnostics.Process.GetProcessesByName(ProcessName);
                foreach (var item in temp)
                {
                    try
                    {
                        item.Kill();
                        result = true;
                    }
                    catch
                    {
                    }
                }
                return result;
            }
    
            /// <summary>
            /// 检查是否有新版本
            /// </summary>
            /// <returns></returns>
            public static dynamic HasNewVersion()
            {
                try
                {
                    var appPath = Directory.GetParent(Application.StartupPath).FullName;
                    XElement localxdoc = XElement.Load(appPath + "\\LocalVersion.xml");
                    var localV = localxdoc.Element("version").Value;
                    var localU = localxdoc.Element("url").Value;
                    //应用程序名称
                    var localAppName = localxdoc.Element("appName").Value;
                    //更新过程必须关掉的进程列表
                    var localKillList = localxdoc.Element("killList").Value;
    
                    XElement serverxdoc = XElement.Load(localU);
                    //服务端版本
                    var serverV = serverxdoc.Element("version").Value;
                    //更新包地址
                    var serverU = serverxdoc.Element("url").Value;
                    //是否必须更新
                    var serverRU = serverxdoc.Element("requiredUpdate").Value;
    
                    var temp2 = Convert.ToInt32(serverV.Replace(".", ""));
                    var temp3 = Convert.ToInt32(localV.Replace(".", ""));
    
                    return new
                    {
                        result = temp2 > temp3,
                        url = serverU,
                        appName = localAppName,
                        packName = Path.GetFileNameWithoutExtension(serverU),
                        killList = localKillList,
                        requiredUpdate = serverRU
                    };
                }
                catch {
                    return new { result = false };
                }                      
            }
            /// <summary>
            /// 异步下载文件
            /// </summary>
            /// <param name="param"></param>
            public void Download(dynamic param)
            {
                var savePath = AppDomain.CurrentDomain.BaseDirectory;
                var downUrl = param.url.ToString();
                _client.DownloadFileAsync(new Uri(downUrl), savePath + param.packName.ToString() + ".zip", param);
            }
    
            /// <summary>
            /// 判断本程序当前是否运行在系统盘
            /// </summary>
            /// <returns></returns>
            public static bool IsSystemPath()
            {
                //系统盘路径
                string path = Environment.GetEnvironmentVariable("systemdrive");
                return Application.StartupPath.StartsWith(path, StringComparison.OrdinalIgnoreCase);
            }
            /// <summary>
            /// 判断本程序当前是否以管理员身份运行
            /// </summary>
            /// <returns></returns>
            public static bool IsAdministrator()
            {
                WindowsIdentity current = WindowsIdentity.GetCurrent();
                WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
                return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
            }
            /// <summary>
            /// 以管理员身份重新启动程序
            /// </summary>
            public static void ReStartAppWithAdministrator()
            {
                try
                {
                    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                    startInfo.UseShellExecute = true;
                    //startInfo.WorkingDirectory = $@"{AppDomain.CurrentDomain.BaseDirectory}";
                    startInfo.FileName = $@"{Application.StartupPath}\{Process.GetCurrentProcess().ProcessName}.exe";
                    //设置启动动作,确保以管理员身份运行
                    startInfo.Verb = "runas";
                    System.Diagnostics.Process.Start(startInfo);
                }
                catch
                {
    
                }
            }
        }
    }
    

    文件下载完成后开始,复制新文件到安装目录

    		/// <summary>
            /// 更新包下载完成,开始更新操作
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
            {
                if (!e.Cancelled && e.UserState != null)
                {
                    MessageBox.Show(Properties.Resources.DownLoadSuccess, Properties.Resources.NewVersion, MessageBoxButtons.OK);
                    System.Threading.CancellationTokenSource cts = new System.Threading.CancellationTokenSource();
                    //解压文件、复制文件、删除文件 做个假进度
                    Task.Factory.StartNew(() => {
                        BeginInvoke((Action)(() => {
                            progressBar1.Minimum = 0;
                            progressBar1.Maximum = 100;
                            progressBar1.Value = 0;
                            label1.Text = "";
                        }));
                        Random r = new Random();
                        while (!cts.Token.IsCancellationRequested)
                        {
                            if (progressBar1.Value >= 100)
                            {
                                BeginInvoke(new Action(() => { progressBar1.Value = 0; }));
                            }
                            else
                            {
                                BeginInvoke(new Action(() => { progressBar1.Value += 1; }));
                            }
                            System.Threading.Thread.Sleep(r.Next(10, 100));
                        }
                        BeginInvoke(new Action(() => { progressBar1.Value = 100; }));
                    });
                    Task.Factory.StartNew(() => {
                        dynamic temp = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(e.UserState));
                        //杀掉所有需要关闭的进程
                        var killList = temp.killList.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (var item in killList)
                        {
                            UpdateApp.Update.CloseProcess(item);
                        }
                        //获取主程序的所在路径,这里因为是在主程序的安装根目录里放了一个文件夹,文件夹里面放更新程序的结构..\App\App.exe   ..\App\UpdateApp\UpdateApp.exe
                        var appPath = Directory.GetParent(Application.StartupPath).FullName;
                        //下载到的更新包的所在路径,与更新程序所在位置相同
                        var packPath = Application.StartupPath + "\\" + temp.packName.ToString() + ".zip";
                        //更新包解压路径,与更新程序所在位置相同
                        var unpackPath = Application.StartupPath + "\\" + temp.packName;
                        //开始解压
                        myZip.ZipHelper.UnZip(packPath, Application.StartupPath);
                        //复制新文件到主程序安装目录,至于文件复制失败之类的情况,没有处理,重新安装客户端吧
                        myZip.ZipHelper.CopyDirectory(unpackPath, appPath);
    
                        //操作完成,删除更新包
                        File.Delete(packPath);
                        //删除解压后的更新包
                        myZip.ZipHelper.DeleteFolder(unpackPath);
                        Directory.Delete(unpackPath, true);
                        //停止进度条
                        cts.Cancel();
    
                        MessageBox.Show(Properties.Resources.UpdateSuccess, Properties.Resources.NewVersion, MessageBoxButtons.OK);
                        //更新完成,重新打开主应用程序
                        Process p = new Process();
                        p.StartInfo.FileName = $@"{appPath}\{temp.appName.ToString()}.exe";
                        p.Start();
                        //退出更新程序
                        Environment.Exit(0);
                    });
                }
                else
                {
                    MessageBox.Show(Properties.Resources.DownLoadFail, Properties.Resources.NewVersion, MessageBoxButtons.OK);
                    Environment.Exit(0);
                }
            }
    

    解压用到了ICSharpCode.SharpZipLib.dll,所以更新包需要打包成zip

    using ICSharpCode.SharpZipLib.Zip;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    //ICSharpCode.SharpZipLib.dll
    namespace myZip
    {
        /// <summary>
        /// Zip压缩帮助类
        /// </summary>
        public class ZipHelper
        {
            /// <summary>
            /// 压缩文件夹 包括子文件夹
            /// </summary>
            /// <param name="filesPath"></param>
            /// <param name="zipFilePath"></param>
            /// <param name="compressionLevel"></param>
            public void CreateZipFile(string filesPath, string zipFilePath, int compressionLevel = 9)
            {
                if (!Directory.Exists(filesPath))
                {
                    return;
                }
                if (Path.GetExtension(zipFilePath) != ".zip")
                {
                    zipFilePath = zipFilePath + ".zip";
                }
                string[] filenames = Directory.GetFiles(filesPath, "*.*", SearchOption.AllDirectories);
                
                ZipOutputStream stream = new ZipOutputStream(File.Create(zipFilePath));
                stream.SetLevel(compressionLevel); // 压缩级别 0-9  
                byte[] buffer = new byte[4096]; //缓冲区大小  
                
                foreach (string file in filenames)
                {
                    if(file != zipFilePath)
                    {
                        ZipEntry entry = new ZipEntry(file.Replace(filesPath+"\\", ""));
                        entry.DateTime = DateTime.Now;
                        stream.PutNextEntry(entry);
                        using (FileStream fs = File.OpenRead(file))
                        {
                            int sourceBytes;
                            do
                            {
                                sourceBytes = fs.Read(buffer, 0, buffer.Length);
                                stream.Write(buffer, 0, sourceBytes);
                            } while (sourceBytes > 0);
                        }
                    }    
                }
                stream.Finish();
                stream.Close();
            }
    
            ///<summary>
            /// 清空指定的文件夹,但不删除文件夹
            /// </summary>
            /// <param name="dir"></param>
            public static void DeleteFolder(string dir)
            {
                System.Threading.Tasks.Parallel.ForEach(Directory.GetFileSystemEntries(dir), (d) => {
                    try
                    {
                        if (File.Exists(d))
                        {
                            FileInfo fi = new FileInfo(d);
                            if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
                                fi.Attributes = FileAttributes.Normal;
                            File.Delete(d);//直接删除其中的文件  
                        }
                        else
                        {
                            DirectoryInfo d1 = new DirectoryInfo(d);
                            if (d1.GetFiles().Length != 0)
                            {
                                DeleteFolder(d1.FullName);递归删除子文件夹
                            }
                            Directory.Delete(d,true);
                        }
                    }
                    catch
                    {
    
                    }
                });
                if (Directory.GetFileSystemEntries(dir).Length > 0)
                {
                    DeleteFolder(dir);
                }
            }
            public static void CopyDirectory(string srcPath, string destPath)
            {
                try
                {
                    DirectoryInfo dir = new DirectoryInfo(srcPath);
                    FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  //获取目录下(不包含子目录)的文件和子目录
                    foreach (FileSystemInfo i in fileinfo)
                    {
                        if (i is DirectoryInfo)     //判断是否文件夹
                        {
                            if (!Directory.Exists(destPath + "\\" + i.Name))
                            {
                                Directory.CreateDirectory(destPath + "\\" + i.Name);   //目标目录下不存在此文件夹即创建子文件夹
                            }
                            CopyDirectory(i.FullName, destPath + "\\" + i.Name);    //递归调用复制子文件夹
                        }
                        else
                        {                       
                            File.Copy(i.FullName, destPath + "\\" + i.Name, true);      //不是文件夹即复制文件,true表示可以覆盖同名文件
                        }
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
    
            /// <summary>  
            /// 功能:解压zip格式的文件。  
            /// </summary>  
            /// <param name="zipFilePath">压缩文件路径</param>  
            /// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param>  
            /// <returns>解压是否成功</returns>  
            public static void UnZip(string zipFilePath, string unZipDir="")
            {
                if (zipFilePath == string.Empty)
                {
                    throw new Exception("压缩文件不能为空!");
                }
                if (!File.Exists(zipFilePath))
                {
                    throw new FileNotFoundException("压缩文件不存在!");
                }
                //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹  
                if (unZipDir == string.Empty)
                    unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
                if (!unZipDir.EndsWith("/"))
                    unZipDir += "/";
                if (!Directory.Exists(unZipDir))
                    Directory.CreateDirectory(unZipDir);
    
                using (var s = new ZipInputStream(File.OpenRead(zipFilePath)))
                {
    
                    ZipEntry theEntry;
                    while ((theEntry = s.GetNextEntry()) != null)
                    {
                        string directoryName = Path.GetDirectoryName(theEntry.Name);
                        string fileName = Path.GetFileName(theEntry.Name);
                        if (!string.IsNullOrEmpty(directoryName))
                        {
                            Directory.CreateDirectory(unZipDir + directoryName);
                        }
                        if (directoryName != null && !directoryName.EndsWith("/"))
                        {
                        }
                        if (fileName != String.Empty)
                        {
                            using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
                            {
                                int size;
                                byte[] data = new byte[2048];
                                while (true)
                                {
                                    size = s.Read(data, 0, data.Length);
                                    if (size > 0)
                                    {
                                        streamWriter.Write(data, 0, size);
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    

    然后在主程序里启动检查更新的程序

    wpf在程序启动时,同时启动检查更新程序

    public partial class App : Application
        {
            protected override void OnStartup(StartupEventArgs e)
            {
                try
                    {
                        Task.Factory.StartNew(() => {
     						//更新程序位于主程序安装目录的“UpdateApp”文件夹里面
                            string exePath = $@"{AppDomain.CurrentDomain.BaseDirectory}UpdateApp\UpdateApp.exe";
                            if (File.Exists(exePath))
                            {
                                System.Diagnostics.Process p = new System.Diagnostics.Process();
                                p.StartInfo.FileName = exePath;
                                p.Start();
                            }
                        });                                       
                    }catch {}                  
            }
        }
    

    winfrom在程序启动时,同时启动检查更新程序

    static class Program
        {       
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
               Application.EnableVisualStyles();
               Application.SetCompatibleTextRenderingDefault(false);
               Application.Run(new Form1());
               try
               {
                   Task.Factory.StartNew(() => {
    			    	//更新程序位于主程序安装目录的“UpdateApp”文件夹里面
                       string exePath = $@"{AppDomain.CurrentDomain.BaseDirectory}UpdateApp\UpdateApp.exe";
                       if (File.Exists(exePath))
                       {
                           System.Diagnostics.Process p = new System.Diagnostics.Process();
                           p.StartInfo.FileName = exePath;
                           p.Start();
                       }
                   });                                       
               }catch {}            
            }
        }
    

    当然也可以在其他地方,或者点击一下再启动,都可以

    然后就是各个文件该放在哪里的问题了

    主程序安装目录
    在这里插入图片描述
    UpdateApp里面的就是更新程序的相关文件而已了
    在这里插入图片描述
    客户端的配置这就完了

    然后是服务端发布更新包
    新建个文件夹可以用版本号来命名eg:2.0.0.0,里面文件结构与主程序的安装结构要保持一致,并且排除“UpdateApp”更新程序文件夹,并且要包含新版的“LocalVersion.xml”(里面的版本号修改为2.0.0.0,同时也可以修改里面的其它字段)
    在这里插入图片描述

    LocalVersion.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
      <version remark="本地版本号">2.0.0.0</version>
      <url remark="检查更新地址">http://localhost/update/ServerVersion.xml</url>
      <appName remark="应用程序名称">MyApp</appName>
      <killList remark="更新过程中需要关掉的应用程序名称,多个使用英文逗号分割,没有则为空">MyApp,CefSharp.BrowserSubprocess</killList>
    </root>
    <!--客户端版本配置xml例子-->
    

    然后压缩成zip包,放到web服务器里,同时更新“ServerVersion.xml”,更新版本号为2.0.0.0,配置好更新包的所在url,还可以配置这次的版本更新是否是必须的,如果“requiredUpdate”设为“true”,表示更新程序不会弹出“是否更新”的对话框给客户看到,而是直接下载更新,如果设为“false”,则会弹出提示对话框

    ServerVersion.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
      <version remark="最新版本号">2.0.0.0</version>
      <url remark="最新版本包">http://localhost/update/2.0.0.0.zip</url>
      <requiredUpdate remark="是否必须更新">true</requiredUpdate>
    </root>
    <!--服务端新版本配置xml例子-->
    

    在这里插入图片描述

    所以检查版本是否有更新的位置和更新包的下载位置是可以分开的,只要配合url就可以了
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    百度网盘下载
    链接: https://pan.baidu.com/s/1jhh_sTppEUBaD-Ldjta7cw 提取码: zg4t
    https://gitee.com/l-cj/mycode/tree/master/UpdateApp

    ---------------------------------------------------2019年12月19日13:02:57----------------------------------------
    .net 框架设为2.0
    增加更新时 停、启指定windows服务功能

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
      <version remark="本地版本号">1.0.0.0</version>
      <url remark="检查更新地址">http://localhost/ServerVersion.xml</url>
      <reStartList remark="更新完成后需要启动的应用程序名称">DesktopApp</reStartList>
      <reStartServiceList remark="更新完成后需要启动的服务名称"></reStartServiceList>
      <killList remark="更新过程中需要关掉的应用程序名称">DesktopApp</killList>
      <killServiceList remark="更新过程中需要关掉的服务名称"></killServiceList>
    </root>
    <!--客户端版本配置xml例子-->
    

    百度网盘下载
    链接: https://pan.baidu.com/s/1CpezM6b-VmHhEtUVSGuSOg 提取码: v9kk
    https://gitee.com/l-cj/mycode/tree/master/UpdateApp20

    展开全文
  • 启动程序失败,路径或者权限错误? 检查自己的问题,这个项目与之前的项目除了名字不同外开始是相同 的,与以前项目建立时间也相关不大,期间电脑系统没什么变化。 查权限也没什么改变。 搜索发现其他人也有这种...

    新建立一项目,什么也没发动的情况下,执行,出错,信息以下:
    启动程序失败,路径或者权限错误?
    检查自己的问题,这个项目与之前的项目除了名字不同外开始是相同 的,与以前项目建立时间也相关不大,期间电脑系统没什么变化。
    查权限也没什么改变。
    搜索发现其他人也有这种情况,有人说要改pro文件的内容。
    下面的提到要修改TARGET。
    http://blog.csdn.net/slug302/article/details/8611822
    偿试把项目名截去一大部分,执行恢复正常。
    再把项目名恢复一点,执行正常。
    再把项目名恢复到原来一样,执行正常。
    就这样简单地骗过Qt了?
    当然不可能了。当再次执行时,仍然出错,把release目录的文件删除再执行仍然出错。
    想来可能与起名有关,于时把项目名改来改去,总是出错。
    我的项目名包括两个敏感字:
    Simulation installation
    我在pro中把它们修改成缩写,把其中一个删除,仍然出错。
    我重新建立项目,把原项目名改成缩写,删除其中一个,也出错。
    再重新建立项目,不包括此两字或它的缩写,执行正常。
    还有一现象,直接在release中执行exe文件,windows会跳出警告窗口。
    看来问题不是Qt给的而是来自windows。
    保留执行正常的项目名,个性pro中的TARGET,若包括上面的两字,执行出错。
    查看目录下的exe文件,这些执行出错的图标与其他图标是不同的。
    这里写图片描述
    带有这些警告图标的文件执行时会跳出警告窗口。
    修改一个新的TARGET第一次执行可能正常,但当exe文件前是警告图标时,第二次执行即出错。
    Qt打外“?”号,难道它已经知道这是微软搞的鬼?
    新建项目,其项目名避免这些敏感字词,执行可正常。
    问题是怎知道哪些是敏感字词呢,谁说我们国家不够民主?
    要检测自己起的名字是否为windows的敏感字,很简单,把exe文件改成想要起的名字再检查其图标即可。

    展开全文
  • 若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 ... 目录 问题 解决方法 ... 使用百度网盘从A电脑机拷贝到家里B电脑,都是win10系统出现如下错误: ... 这...
  • window10下面使用Qt编译程序名称带Update这个关键词,Qt运行调试程序报"启动程序失败,路径或者权限错误? 把关键词去掉就可以了,如下:  
  • 挂起重新启动会导致安装程序失败 大致出错信息如下: RebootRequiredCheck 检查是否需要挂起计算机重新启动。挂起重新启动会导致安装程序失败。 失败 需要重新启动计算机。必须重新启动计算机才能安装 SQL Server...
  • 程序启动失败排查步骤

    千次阅读 2012-07-31 16:07:10
    应用程序日志系统日志查看应用程序启动时调用的活动库,检查库文件是否存在 error while loading shared libraries: libiconv.so.2: cannot open 启动zabbix时,报错zabbix_server: error while ...
  • 1 【问题背景】 1.1【情况】 (1) Qt的sdk及creator... (2)添加几个控件后,或者别的操作后,突然编译时就弹出“启动程序失败, 路径或者权限错误”。【很恼火】,由(1)自己明白一切设置没问题, 却给我提...
  • 之前创建了一个项目写的差不多了,于是今天有创建了一个项目,结果运行的时候就出现了“启动程序失败,路径或者权限错误”这个错误,查阅了好多网上的资料终于在如下作者的方法中解决了以上错误。 原作者的地址链接 ...
  • 2.问题描述:SQL server 2008 安装时 安装程序支持规则“重新启动计算机”失败。 3.出现原因:注册表PendingFileRenameOperations问题。 SQL安装程序在运行时可能会使用这个键值,记录在安装过程中对临时文件的...
  • 原文链接:UNI_APP HBuild 启动微信小程序开发工具失败 今天在用HBuild编译别人的开源项目到微信小程序的时候,出现“uni_app 微信开发工具 调试 小程序 启动开发工具失败”的问题。 后来去DCloud社区看了一下,也...
  • 再次调试,启动不成功,Qt creater 输出调试信息 “启动程序失败,路径或者权限错误”解决方法” 在网上搜索了一些方案,均无效 后来把项目目录的xxx.pro.user删除掉,重新用Qt creater 打开项目并重新配置,正常...
  • 1.出现这种错误,首先找到debug目录下面,双击expr.exe这个程序能不能启动,如果不能启动和你的电脑系统是有关系的,将qt卸载,然后重新安装qt,重新安装的时候切记一定要以管理员权限打开安装包,安装的时候,千万...
  • 微信小程序启动出现初始化失败

    千次阅读 2019-03-04 10:14:41
    打开项目的时候,会提示初始化失败低于2.2.3版本: 1、点击右边收起的按钮 2、点击调试基础库,选择高于2.2.3版本的 就OK了
  • Qt 之启动外部程序

    万次阅读 多人点赞 2016-01-07 20:41:55
    QProcess可以用来启动外部程序,并与它们交互。要启动一个进程,通过调用start()来进行,参数包含程序的名称和命令行参数,参数作为一个QStringList的单个字符串。另外,也可以使用setProgram()和setArguments()来...
  • 这个错误网上找了很多解决方法,都没有解决,之后查询下面的方法可以解决问题,修改.pro文件的“TARGET”参数的内容 修改以前 出现报错 Starting D:\Code\Code_for_qt...启动程序失败,路径或者权限错误? D:\C...
  • //<...------- // 版本更新 checkUpdateVersion: function () { var that=this //创建 UpdateManager 实例 const updateManager = wx.getUpdateManager(); //检测版本更新 updateManager.o...
  • 这问题真是搞笑,突然出现的。 网上 : 1: 重新建个项目,把代码拷过去,轻松破之 我重新启动了下项目就没问题了。
  • 启动程序失败,路径或者权限错误? 一开始当然是检查路径了,但是发现没有错误,那么就是权限打原因了,我打开工程目录,直接运行程序,还是不行。 右键属性->权限->允许作为程序打开 勾选上,但是我发现...
  • 由于需要器安装报表服务,提示 “重新启动计算机”失败 但是即使重启计算机还是一样失败。 参考:sql server2008安装时提示重启计算机失败怎么办 【Win】+【R】运行【regedit】 打开注册表 ...
  • Eclipse启动项目报启动上下文失败问题解决方案总结

    万次阅读 多人点赞 2017-02-09 15:41:59
    最近用Eclipse中启动项目的时候经常会报一个奇怪的问题,之前也遇到过,经过清理一下Jboos的发布文件就可以解决,但是这次不行;也了解到项目组的部分其他同事也遇到相同的问题也备受它的折磨。 于是乎对它进行了...
  • CDRX6启动失败 提示尝试重新启动计算机和应用程序.如果这些操作还是不能解决问题,请卸载应用程序,重新安装。错误4 。 有的错误是38。 解决方法一样的。 在计算机服务中将服务Protexis Licensing V2右键改为自动,...
  • 这两天想在WIN7下,装sqlserver2008,但是一直装不...挂起重新启动会导致安装程序失败。 失败 需要重新启动计算机。必须重新启动计算机才能安装 SQL Server。  解决步骤: a 、重启机器,再进行安装
  • 群晖 Synology应用程序服务更新失败~

    千次阅读 2020-07-15 10:35:00
    文章目录群晖 Synology应用程序服务更新失败解决办法异常解决办法群晖SSH使用方法第一步: 打开"控制面板"-"终端机和SNMP"![在这里插入图片描述]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 504,590
精华内容 201,836
关键字:

启动更新程序失败