昔时贤文,诲汝谆谆,集韵增广,多见多闻。今年的第一篇博客,哎,懒惰了。。。
环境:windows cs架构,客户端
当我们程序要发布版本的时候,首先就是需要进行打包成安装包,比如用inno setup进行打包,然后供用户下载,不管你的介质是线上下载还是线下载体拷贝。
程序员应该都知道,有些目录的属性是只读,或者受系统保护,比如c盘包含Program Files的文件夹如果要写入就需要管理员权限。
遇到的问题:
当有这种情况,就是我们客户端安装在比如Program Files目录且没有管理员方式运行时:
1.客户端在运行中可能会涉及向本地文件(Program Files目录)进行读写数据,那必然会写入失败。
2.客户端启动时需要更新客户端,如果更新程序没有管理员权限也会更新失败。
如何解决:
查看了很多软件的安装方式,有的默认安装在appdata目录,有的安装在Program Files目录,需要升级的时候也是临时申请权限(UAC),比如QQ:
方法1.程序编译的时候就给exe添加管理员权限,包括打包后的安装包也添加管理员权限,但这样也是有问题的,有时候拷贝到另一台电脑上的时候你会发现管理员权限消失了,这就尴尬了,因此不推荐!
方法2.就是将程序安装在比如appdata目录,不好的地方就是万一有的用户喜欢找茬偏要选择安装在Program Files目录呢?所以还是得设置安装包禁止用户选择安装路径。不够完美,依情况选择!
方法3.我认为比较标准的就是将程序默认安装在Program Files目录,这也是微软推荐的,防止流氓软件瞎搞,涉及到用户数据比如配置文件,保存的数据这些可以写在appdata目录或ProgramData目录,涉及到程序更新则临时向用户申请权限进行更新。