Fork me on GitHub

林德熙

If you have any language confusion,please talk to me lindexi_gd@163.com.

产品经理——做一个自己的系统

我开了公司,公司名称叫微硬,简称MS。(The Microsoft is WR ,and my Microhard is ms)。

微硬公司中,我是产品经理。以前的产品经理都是想着用户,所以做出来对开发者都不好,很多开发者都不做MS的开发。于是,我从开发者的角度设计,让开发者喜欢。对于用户,反正我不知道。

现在的客户端应用与网页端应用,其实都有缺点。我想做一个有两者优点没有两者缺点的系统。

首先,客户端应用,需要用户使用先经过很长的等待下载和等待安装,所以好多应用都卡在这里。而网页端却是可以做到点卡就可以使用。但是网页端不能好的使用硬件的性能。在每次使用网页都需要下载上一次已经用过的资源,虽然有缓存,但是好多东西还是要下载一次。另外,对于一些需要处理大的文件,还是要经过很长的等待。网页端还有一个缺点,就是用户留下的比较少,用户不会记得有这个网页,除非他需要。而这些缺点,客户端都能解决。客户端的问题是更新慢,一次更新,经常需要更新整个程序,网页可以快速更新,不需要和客户端一样。客户端可以把信息存放在用户本地,对于一些机密的信息,人们比较喜欢用单机的客户端,不喜欢使用网页端。但是客户端经常太流氓,网页端可以不怕流氓。

我想做一个系统,可以让客户端点击就可以打开,又保留客户端的优点,但是让开发者可以不去想更新的问题,自动帮开发者升级。但客户端添加了很多限制,其中最大的就是和WR的理念,使用沙箱,限制客户端的文件访问和系统权限。所有的权限都要向用户申请,之外,所有的开发者都需要和MS申请,如果开发的应用出现问题,可以直接去找开发者。

以前的人都是从使用开始讲,一点也不好,于是我的系统开始从开发开始讲。

开发中,我是从发布开始讲,也就是开发的最后一步,让用户使用应用。

安装应用

安装的区别

发布的软件其实可以分为单机版和联机版,单机版可以不需要联网就可以运行,联机版可以在不联网运行,但是有些功能无法使用。

无论是哪个版本,都需要开发者使用自己在MS申请的账号,新建一个APP,MS会给每一个APP一个唯一的ID和私钥,开发者必须对自己的应用使用MS给的私钥签名。这样,其他人就不能假装应用是其他开发者开发的。

那么来说下单机版的应用如何给用户使用。

MS 提供两种方式给用户安装,但是用户只知道有一个安装包,不知道安装包的区别。

和WR一样,我们提供的安装包有一种是中间语言安装包,他就是把开发者的代码编译为中间代码,用户可以通过把中间语音安装包编译为本机代码来安装。另一种就是下载已经编译为本机的安装包,可以不需要经过编译就使用。

于是两个安装包就在需不需要编译的一个问题。

验证秘钥

安装之前,MS系统会自动检测安装包的签名,从获取应用的应用ID,然后到MS服务器获取应用ID的公钥,使用应用的公钥去解密,获取开发者和应用信息。关于加密的开发者和应用信息,我将在后面说包括哪些。

一旦下载的公钥可以去解密,那么可以证明,这个应用是受官方认可的,一旦应用出现问题,可以直接把责任到开发者上。而且对于放在MS服务器的单机版安装包,还可以使用MS的安全验证,验证安全。

安装所在地方

那么系统是不是和WR的一样,有好多个盘。我觉得不要,系统和Linux一样才好,通过文件夹、软连接来使用多个硬盘才好。用户以为只有一个硬盘,不需要自己去想如何把东西放在什么硬盘。

所以系统有一个区,这个文件夹是放所有的安装的应用,应用只有安装在这个文件夹才可以运行,如果在其他文件夹,那么不能运行。所有的应用有自己的文件夹,文件夹的应用只有一个入口。

但是还有问题,用户从哪获取安装包。MS提供让开发者把自己的安装包传到MS服务器,在申请开发的时候免费给开发者10G的空间放安装包。但是WR告诉了我,如果只能从MS服务器下载,可能会让用户都跑了,因为存在一些地方无法从MS服务器下载,所以可以

申请图片库权限

应用:XX 申请图片库访问权限。 应用向用户说的:我需要帮你处理相册 系统:请注意,某些应用可能会上传您的私密照片,如果不信任该应用,请点否。

产品经理——一个密码登陆所有账号

广告

所有应用的广告懂通过 ms 成立的开发包引入。

检测用户是否使用,如果用户不在使用,显示广告是无效。检测广告是否显示,用底层检测,判断是否软件点击是ms判断。

点击广告可以使用url打开应用,如果打开的应用没有下载,自动下载。

ms 使用所有通讯只有ms服务器,不区分广告和更新,安全传输。

如果无法连接ms服务器,进行登陆提示当前无法连接ms服务器,无法进行xx。工程师联系。尝试修复。

修复用的:禁用代理应用。

功能应用

功能应用只能有某些功能,如果输入法功能。

具有输入法的应用,只能做输入,不能做其他。

代理应用,可以网络代理。

ms 对功能应用开放应用权限,禁止其他权限。

如输入法应用,禁止弹窗,禁止显示设置,禁止让用户下载应用功能。

输入法设置只能在设置界面进行设置,输入法可以给一个窗口做设置。

安装软件

所有的软件都需要有签名,但是软件的安装可以分为三个不同的方式。第一个是直接从 ms 商店下载,于是这个方式就是单机安装,把安装软件上传到 ms 商店进行修改。第二个方式是生成安装包之后,通过其他方式给用户,用户进行安装包直接安装。第三个方式是通过服务器安装,可以是其他软件应用商店进行安装,可以是自己的服务器提供用户安装。

第一个方式是最方便用户和开发者,因为开发者不需要自己去找服务器或者如何去找用户,只需要把自己开发完成的软件放在 ms 的商店就好了,ms 商店自动给上传的软件进行签名,而且提供自动更新,自动可以获得软件崩溃信息,提供软件反馈,自动获得软件评价。但是缺点是 ms 商店可能在一些地方的网速很慢,所以用户可能无法进行下载。第一个方式就是 win10 现在的方式,看起来很多地方都很好,但是无法下载就让开发者不喜欢开发这个应用。所以在新的 ms 系统,需要小心这一点,这也就是为何需要第二个和第三个方式的原因,既然自己无法保证在所有地方都有好的网速,无法保证提供用户想要的软件,那么不如给其他人来做。

第二个方式,就是提供一些软件可能开发者不希望让很多人都知道,也不希望其他人可以拿到,或者这个软件被一些地方的政策禁止,但是他希望大家使用软件。于是就使用和原来的安装包方式,这个方法可以通过发送安装包进行安装的方式。但是发布安装包,需要进行 ms 签名,ms 提供的软件安装必须判断安装包的签名是否正确。过程就是,开发者必须有 ms 开发证,然后通过本地工具给安装包签名,然后把签名信息上传到 ms 商店,不需要上传安装包。这样用户获得安装包,就通过安装包提供的签名从 ms 商店获得判断,并且获得解密的信息,如果解密成功,那么就可以进行安装。通过这个,用户可以看到安装包是不是有更新信息,安装包是不是开发者是不是假的,安装包是不是被修改。这个方法还可以让开发者知道有多少用户安装了这个软件。就算 ms 的速度再慢,获得这个信息使用的时间也不是很长。

第三个方式,开发者可以自己做服务器,于是就需要开发者把自己服务器的 ip 或域名 ,软件安装地址进行签名,上传到ms商店。于是提供给用户的就是安装链接,用户获得这个地址,就从 ms 商店获得软件的实际安装地址,然后从服务器进行下载安装。非官方的软件商店就可以使用这个方法,提供用户的安装,但是这个方法,ms 还是可以获得用户安装的信息,因为软件的信息都需要上传一份到 ms 商店。开发者如果对于一些公司,可以自己做服务器,提供自己的软件安装,不需要把自己的软件放在其他地方。第三个方式可以有效防止自己的安装软件被破解,而且可以让用户需要付费才可以安装。因为如果用户不付费,就不会让用户安装。在安装的过程,用户需要上传自己的硬件信息给服务器,服务器可以通过这些,发送给用户不同的安装包,或者直接通过用户机器优化的安装包,而不是中间语言的安装包,用户直接下载就可以使用,不需要经过编译。而且这个方法可以让用户不需要下载全部的数据就可以运行,就像是使用了网页缓存一样。优点还有一个,开发者可以通过比较快的增量更新的方式,如果更新一个地方,只需要更新用户的一点,不需要重新让用户下载整个安装包,这是比第二个方式好的地方。

第三个方式是对开发要求比较高的,但是提供了很多好处,可以控制用户的软件升级,让用户可以更快打开软件,因为不需要下载全部数据,就像网页一样,只是加了缓存。

锁屏

锁屏是特殊的软件,和系统安装直接联系, ms 商店不提供第三方的锁屏,如果想使用第三方的,需要去其他商店下载。如果一个软件说明是锁屏,那么他就可以拥有锁屏的功能,包括解锁。但是其它的功能他是没有的,如标题等。

锁屏主要提供了用户锁屏密码,提供的接口有两个函数,一个是锁屏,一个是解锁。锁屏函数调用返回一个用户锁屏密码,重复使用锁屏函数会报错,当然可以其它的接口获得当前是否锁屏。解锁时,需要输入用户锁屏密码,所以一般的建议是把锁屏得到的密码存放起来,依靠用户的设置进行加密,如果用户输入相同的密码,那么对他解密,获得解锁的密码。所以在用户输错设置的密码,那么就无法锁屏。当然忘记密码的,是否需要做,如果需要那么可以用软件自己的方式加密,提供忘记密码。

需要注意,锁屏软件只可以访问自己的目录的文件,不可以访问其它的文件。如果有软件需要告诉锁屏软件现在显示什么, 那么可以通过应用分享的方式,指定发送信息到锁屏。

为何提供的是用户锁屏密码?因为对于锁屏来说,需要ms把用户的密码从内存删除,这时所有的用户文件和应用都无法解密所以无法进行使用,但是为了安全不把用户的密码告诉锁屏,所以只能对用户的密码进行加密,之后把加密的密码作为锁屏密码。所以通过解锁可以输入锁屏密码解密用户密码,这样锁屏软件不知道用户的密码,可以让软件支持网络。因为无法上传其它的文件和用户的密码,所以即使使用第三方的锁屏也是安全。

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系