Windows10 1809版本开始,微软又对UWP开放了新的Capability:AllowElevation. 通过这个新的Capability,UWP APP能够在运行时向用户请求Admin权限,配合Windows 1607版本就引入的RunFullTrust Capability(参考<迁移桌面程序到MS Store(9)——APPX With Desktop Extension >),我们可以让MS Store中的APP拥有无限接近传统桌面程序的能力.本篇提到的Sample工程位于全…
在上一篇<迁移桌面程序到MS Store(7)——APPX + Service>中,我们提到将desktop application拆分成UI Client+Service两部分.其中UI Client可以通过Desktop Bridge技术Pacakage成APPX,上传到MS Store以供下载,而Service则仍以传统的desktop application安装包形式提供.这样势必造成用户安装时的割裂感.本篇将就这个问题进行一些讨论. 首先我们参照上图的架构创建Sample Solut…
在<迁移桌面程序到MS Store(8)——通过APPX下载Win32Component>中我们讨论了通过APPX来下载Service部分的安装包.但是纯UWP的客户端并不能自动运行下载的exe或者msi文件.本篇将着手解决这个问题.假设我们有如下结构的application,蓝色APPX中包含UWP及.NET Standard Libraries.而Service部分以WCF的形式Host在Windows Service上,这其中包含了诸如Win32 API等无法迁移到UWP的内容. 因为用…
接下来的几篇,我想讨论下迁移桌面程序到MS Store,可以采用的比较常见.通用性比较强的实施步骤和分层架构. 通常商业项目一般都是不断的迭代,不太可能突然停止更新现有的桌面版本,然后花很长时间从头来写UWP版本,所以我建议将迁移的过程分阶段,通过几个版本的迭代,慢慢地从传统桌面程序,转变成一个可以通过MS Store审核的APPX程序.至于之后要不要变成真·UWP可以视市场反馈决定. 假设现有的桌面程序包含一个MainUI的WPF工程,多个.NET Framework 4.5的类库,以及一个C…
之前跑去做了一年多的iOS开发,被XCode恶心得不行.做人呢,最重要的是开心.所以我就炒了公司鱿鱼,挪了个窝回头去做Windows开发了.        UWP什么的很久没有正儿八经写了,国内的需求非常少.传统的桌面开发倒是因为人越来越少了,需求还在,有少量还不错的职位.现在在做WPF的项目,公司层面倒是很愿意迁移到UWP,但是迁移起来会有很多的困难和限制.同时有这方面热情,且知道怎么去做的人就更少了.        接下来会通过几个短篇来介绍如何通过Desktop Bridge来迁移桌面程序…
首先简单介绍Windows 10 S Mode,Windows在该模式下,只能跑MS Store里的软件,不能通过其他方式安装.好处是安全有保障,杜绝一切国产流氓软件.就像iOS一样,APP进商店都需审核,同时APP在沙盒环境下,以普通用户权限运行,不能偷偷摸摸地干坏事,抢占资源的情况也不会发生,自然体验流畅,系统性能提升.一切都是那么的美好,但Windows S Mode就是没有人用…… 这个悲剧真是不好说,也许是用户习惯,也许是违背人性,同时侵犯了厂商(要审核,要分成)和用户的利益(很多软件…
我们在<迁移桌面程序到MS Store(4)——桌面程序调用Win10 API>提到了对Win10 API的调用,但仍存在无法在WPF中使用UWP控件的问题,虽然都是XAML控件,但却是两套命名空间下的同名类型,无法混用.人总会被现实打败,强大如某软也得向生活低头,UWP一直没有起色,某软的老大又一心去搞Azure.Windows平台的重振,似乎想走回头路,从1903版本开始,支持在.NET Framwork的WPF和WinForm工程中,直接使用部分的UWP控件了.首当其冲的,就是有点骚包的…
假设我们现有一个WPF程序,需要支持1903以前的Windows 10版本.同时在1903以后的版本上,额外多出一个Ink的功能.那么我们就可以通过ApiInformation.IsApiContractPresent方法来判断1903的API是否可用,决定要不要开放Ink功能给当前用户.新来的同学如果不知道如何使用“ApiInformation.IsApiContractPresent”,请参考<迁移桌面程序到MS Store(4)——桌面程序调用Win10 API>.Sample Code…
迁移传统桌面程序到MS Store的另一种方式是使用Desktop App Converter工具.虽然本篇标题包含了Desktop App Converter(以下简称DAC),实际上我是来劝你别用DAC的…… 首先我简单介绍下DAC,DAC可以转换传统桌面程序,将其打包成APPX文件.虽然名字里有Converter字样,实际这是一个打包程序,并不会真正去修改用来打包的源程序. 为了使用DAC,你需要1607版本以上的Windows 10 Pro.我想也没有人会闲的蛋疼用Win7去打包APP进…
迁移桌面程序的时候,有可能你会遇到这么个需求——开机自启动.Windows传统桌面程序的传统陋习.不论什么奇葩软件都想要开机自启动,默认就给你打开,一开机哐哐哐什么雷,什么企鹅都蹦出来,也不管你用不用. 但是上班呢,老板是给钱的,只要有需求,节操什么的不重要.今天我们就来看怎么弄开机自启动……(大雾) 当然我们这里介绍的,是可以让用户随时禁用的.还有就是MS Store在审核时,会让你写需要自启动的理由.原生的UWP APP还会有一个要求授权的对话框. 首先我们还是和上一篇一样,建好一个空的WP…
本篇我们以一个Sample工程,来说明如何把一个常见结构的desktop application,转制成APPX并在MS Store提供下载. 之前的篇章中,我们已经介绍了一些内容,包括如何通过Visual Studio创建Packaging工程, 如何将Class Libraries转换到.NET Standard版本.至此,UI界面,以及部分DLL的迁移问题得到解决.但有时候我们的desktop application还包括一个本地的Background Service.那么目前微软推荐的策…
在传统桌面程序中,对图标的使用大多是直接嵌入JPG或者PNG的图片.在祖传的1366x768分辨率下,并没有什么问题.相对于手机硬件的突飞猛进,也侧面反映了PC行业的落寞和桌面程序开发的不思进取.用360卫士的群众并不能倒推PC行业的升级.反倒是水果公司双高的利润和口碑让人很是眼馋.加之某软跳出来教猪队友做硬件.现在倒是有些起色,1080p的屏幕已是标配,4k也算常见.那么传统桌面程序在升级过程中,就会遇到今天要讨论的,如何解决高分辨率下图标模糊的问题. 一种解决方案是按最高的分辨率提供图片.这…
上一篇我们讨论了如何在转制的桌面程序中,通过StartupTask来实现转制版本的开机自启动.实际操作中,我们通过编辑Packaging工程中的Package.appxmanifest文件,来添加自启动的配置项.如果要在程序的UI中实现开启和关闭自启动的功能.那就需要通过代码来操作StartupTask对象.StarupTask位于Windows.wimd(Windows元数据文件)中的命名空间Windows.ApplicationModel. 在桌面程序中调用Win10 API一般有以下两个途…
没想到该系列不仅没有太监,还打算更新一个小短篇.在各种大厂小厂工作的各位想必都知道Windows域的概念.入域的机器很多的设置就由不得当前登入所使用的域账号了,Windows的更新和安全等众多的设置均被锁定,由域管理员掌控.闻道有先后,术业有专攻.域管理员往往不懂软件开发,公司统一的Group Policy设置也不会额外针对项目做出微调.导致Windows 10的Developer Mode默认关闭,直接后果就是无法调试,开发和部署UWP程序.在过去的时间里,年长的IT可能会知道授权给终端开发人…
上一篇我们简单介绍了.NET Standard,本篇我们来实践.NET Framework 4.5 Class Library到.NET Standard 2.0的转换.        首先让我们来做一些准备工作.        第一步,需要将项目组所有同事的Visual Studio统一升级到2017 15.3版本或更新.(程序员鼓励师不用升级Visual Studio)        第二步,将要被转换的.NET 4.5的Class Library升级到.NET 4.7.2.这是因为如果存在…
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情无法做到,因此额外做了一个.NET桌面引擎来辅助,那么现在就需要让这两个不同环境的程序进行交互. 第一步:在桌面应用引擎中,唤醒商店应用. 根据MSDN解释,这边最简单的办法是使用协议(URI protocol)来解决. 1:打开程序的Package.appxmanifest,在声明中添加协议 名称…
paip.php-gtk 桌面程序 helloworld总结 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax 用php写桌面程序的最大最大最大好处就是那是脚本,灵活,, 随时修改,无需编译..方便..如果需要加密也能可以用zend ... A.另外,有IDE支持可视化拖拉式编程..也是很方便阿.. B.PHP世界流行度高,网上代码大把的. C.体积小,无需安装,绿色软件.. D…
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 定位问题的时候往往需要动态修改日志级别并且不能影响业务的正常运行,也就是不能重启应用,此时就要使用到动态日志配置文件加载技术. 如果使用的是logback,总的方法其实很简单,直接在logback.xml配置文件中的开头设置 <configuration scan="true" scanPeriod="10 seconds"> 即可实现热加载.对于非java w…
Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序.使用wxPython来做界面非常的简单,只是不能像C#一样拖动控件,需要自行写代码布局.在完成编写之后,由于直接的py文件不能再没有安装python的电脑上运行,能否有一个打包成在任意电脑都能运行的工具,网上找找发现了py2exe正好可以完成这个功能.wxPython和py2exe都是开源免费软件. wxPython: 下载后双击安装即可,安装程序会自动安装到对应python\Scripts下. py2exe:同…
C#入门---2.C#装备知识(C#创建桌面程序的时候创建的是什么应用程序) 一.总结 一句话总结: WPF应用程序:来替代 WindowsFroms 来创建桌面应用程序 1.什么是控制台程序 Console Application? 为 兼容MS(Microsoft)-DOS 而创建的一种程序,此程序只有一个单一的界面.+ 控制台 就是cmd. 2.c#中的输出语句是什么,快捷键如何操作? 输出语句是Console.WriteLine(); 快捷键为 CW 然后再按两下TAB 3.C#中等待用…
今天休息在家,由于天气热再加上疫情原因,就在家里呆着,空闲时想着,在很早以前(约3年前),产品人员跟我提了一个需求,那就是winform桌面程序的图标能否根据节日动态更换,这种需求在移动APP上还是比较常见,比如:淘宝.天猫.京东.360等,它们在逢节假日时除了APP内容有更新,APP ICON也是都更新了的,但PC端的应用程序(APP)则很少见到说有动态更新图标的,故当时我是直接回绝了的,明确表示做不了,但今天我仔细想了一下,其实也是可以实现的,虽然无法直接更新桌面图标,但我们可以更新替换掉桌…
关于UWP的历史,其起源是Microsoft在Windows 8中引入的Metro apps.(后来又被称作Modern apps, Windows apps, Universal Windows Apps等)无论是从目的还是从效果上看,这一类应用模型都与iOS/Android比较相似,是为了更有利于移动平台生态的发展设计的.然而UWP目前面向的最大的用户群体是Windows桌面用户,只用UWP实现一个程序就会出现很多feature无法实现的问题,因此这种情况下,让用户安装并运行一个普通权限的后…
当双击桌面图标的时候,出现如下错误信息:Process org.xfce.FileManager exited with status 1 于是做出如下尝试: 1. ps aux | grep FileManager未找到 2. pacman -Qs FileManager未找到 3. pacman -Ql | grep FileManager找到一个相关的文件 /usr/share/dbus-1/services/org.xfce.FileManager.service根据路径名,猜测与dbu…
以往写windows桌面程序需要用MFC.C#之类的技术,那么如果你只会web开发技术呢?或者说你有一个网站,但是你想把你的网站打包成一个桌面应用程序,该如何做呢? 答案就是用node-webkit这个开源框架,他封装了webkit内核和node.js,让你可以用web技术来开发windows/linux/OSX程序等.指的一提的是目前node-webkit已经改名为NW.js,下面是在github上的此框架站点: https://github.com/nwjs/nw.js 本文讲述了如何使用该…
在web桌面程序里,图标拖动并重新排序是个比较常见的功能.这个功能我之前反复修改了好几遍,现在终于整理出了比较理想的解决思路,决定拿出来分享下. 这一功能主要有哪些难点呢?我总结了一下一共有2处难点: 1.如何知道被拖动的图标在拖动结束后处于哪个位置 2.知道拖动结束后图标的最后拖动位置,如何判断是在该位置之前插入,还是在之后插入 知道难点后,就可以来一一解决分析了. 首先是第一个,如何知道被拖动的图标在拖动结束后处于哪个位置?要解决这一问题,我在之前的<开源的Web桌面应用框架(文件夹功能分析…
有的时候,一个自定义的鼠标光标能给你的程序增色不少.本文这里介绍一下如何在.net桌面程序中自定义鼠标光标.由于.net的桌面程序分为WinForm和WPF两种,这里分别介绍一下. WinForm程序 对于WinForm程序,可以通过修改Control.Cursor属性来实现光标的修改,如果我们有光标文件的话,可以直接通过如下代码实现自定义光标: this.Cursor = new Cursor("myCursor.cur"); 但这种方式不是本文介绍的重点,本文主要介绍如何自己绘制光…
传统桌面程序不能完全被web和移动端替代,但是需要改造.这里要说的是巧用webapi把以前用dll和com组件,ocx等方式做接口,做分布式开发的方式,改成restful 风格api的方式实现跨平台,多客户端(类型).并分享几则案例. 1.智能储物柜 项目背景:某智慧城市项目需要用到有智能锁的储物柜,用app扫码控制存取,并和智慧城市后台交互.智能锁系统是工业的塔式控制器,使用modbus ascii协议控制,端口使用串口.储物柜配备了工控电脑32寸竖屏,工控电脑控制塔式控制器(单片机),工控机…
首先需要确保电脑已经布置好node.js环境 1.下载并全局安装nw.js npm install nw -g 2.安装nw-builder模块 npm install nw-builder -g 3.在你的html项目中加入package.json文件(具体的参数设置请自行搜索) { "name": "demo", "version": "0.0.1", "main": "index.html&…
<让你的 Qt 桌面程序看上去更加 native>是一个系列文章.在这个系列中,你将会了解到如何让你的 Qt 桌面应用程序看上去更加 native.这里,我假设你已经清楚如何使用 Qt 编写桌面应用程序,因为文章中大多都是所谓的“细节”,而有时候恰恰是这些“细节”决定着用户体验.同时,这里的程序都是指桌面程序,不包括各个嵌入式平台. 关于 Qt 的介绍这里就不再赘述.这里只说明一点,相比其他的 C++ UI库,Qt 的处理实际上更类似 Java 的 Swing.Qt 的大部分组件都是由自己的绘…
Hello Google Node.js 一个基于Google V8 的JavaScript引擎. 一个伟大的端至端语言,或许我对你的热爱源自于web这门极富情感的技术吧! 注: 光阴似水,人生若梦,又是人间年尾.许久未说过如此矫情而生硬的话- - 如此篇幅实在无法写明白我扭曲的心理,2017望我还能继续迈进! 喜庆的话不多说,今天给大家分享一个大致3周前,初次涉足Node.js实现的nw.js桌面程序的自动更新模块吧. 本文不做教学,仅用于打脸!希望以此得到各位大神的帮助. 我本没有打算写如此…