我的应用程序中有一个更新功能 - 它下载并验证安装程序(使用NSIS创建的setup.exe).要实际启动更新,我只是在做:
QString path = .. absolute path to the downloaded file ...
QProcess::startDetached(path, QStringList());
Run Code Online (Sandbox Code Playgroud)
这在XP上运行良好 - 但在Vista和Win7上,下载完成后没有任何反应.如果我浏览到下载的更新并手动运行它,它可以正常工作.我假设发生的事情是UAC在CreateProcess时阻塞了安装程序,但这是我的知识耗尽的地方.
额外的复杂性 - 当我从命令行运行调试版本时,上面的步骤工作 - 我得到UAC提示并可以运行安装程序.这是发布版本,从开始菜单/快捷方式开始,有问题 - 我假设从命令shell运行时auth令牌有所不同.
我需要在两台Linux机器之间移动实时音频,这两台机器都运行在Gstreamer之上的定制软件(我的).(该软件已经通过单独的基于TCP的协议在机器之间进行了其他通信 - 我提到这一点,以防有可靠的带外数据对解决方案产生影响).
音频输入将是发送机器上的麦克风/线路输入,并且正常音频输出将作为目的地上的接收器; alsasrc和alsasink是最有可能的,但是对于测试我一直在使用audiotestsrc而不是真正的麦克风.
GStreamer提供多种方式在网络上传输数据 - RTP,RTSP,GDP支付,UDP和TCP服务器,客户端和套接字等.在音频和视频流媒体网络上也有很多例子 - 但在实践中,它们似乎都不适用于我; 目标管道无法协商上限,或者我听到一个数据包,然后管道停止,或者目标管道立即退出,没有可用的数据.
在所有情况下,我都在命令行上测试gst-launch.不需要压缩音频数据 - 原始音频,或简单的WAV,uLaw或aLaw编码都可以; 更重要的是低延迟.