存档

2014年6月 的存档

Mac 下国内IP不走VPN

2014年6月18日 没有评论

这几天要升级Android SDK,但是更新一直都下载不成功。当然了有一部分因素是最近对 google 的屏蔽太严重了。

后来,我用其它工具在windows下,总算顺利更新成功。对于mac系统,算是无解。我自己服务器假设的vpn,在mac上可以连接,但是无法发送数据,为此郁闷了好久了。后来还是决定买一个 VPN 帐号。

VPN 问题是解决了,但是所有的流量请求都走 VPN 网络,对于国内的网站来说,可能就降低了访问速度,毕竟没有必要先通过国外的服务器中转。

网络上搜索了一下,找到一个相对简单的方法。步骤如下:

1、先不连接 VPN。

2、使用开源工具。在 chnroutes 的官网下载 chnroutes.py 文件。

3、可以把这个文件放到 Mac 的当前用户名目录下,然后终端执行 python chnroutes.py -p mac,就会在当前目录下生成ip-up 和 ip-down 2个文件。

4、终端执行 sudo sh ip-up ,之后正常连接 VPN即可。不用时在终端执行 sudo sh ip-down。

这样,就可以实现,国内的IP不走VPN通道,以提供网络响应速度。

 

同时呢,你还可以访问 chnroutes-dl.appspot.com 来直接下载 ip-up 和 ip-down 文件。这2个文件会不断更新以调整当前最新的IP。

分类: 一句话 标签: , ,

inno setup初探

2014年6月10日 没有评论

由于工作的原因,需要对应用程序制作安装包。在以前的项目中,都是使用的 InstallShield  来做的安装包,最近的一个项目是从一个日本开发团队的项目中新建的一个分支,他们原本的安装包都是使用 Inno Setup 来创建的,结合项目背景和安装包的复杂度,我们就踏上了inno setup的路。

inno setup 相对于 InstallShield 轻量了很多,也是使用了 iss 作为安装脚本文件的后缀。常量的定义也大大方便了开发人员。

下面描述下常见的常量

AppId 应用程序唯一ID
AppName 应用程序名称
AppVersion 应用程序版本号
AppPublisher 应用程序制造商
AppSupportURL 应用程序厂商的URL

DefaultDirName 默认的安装路径
OutputDir exe安装包的输出路径
UninstallDisplayIcon 卸载程序的图标

上面的几个变量中,第一部分的信息会显示在添加删除程序中,尤其以AppId最为重要,操作系统以此来区分不同的应用程序。如果是同一个应用程序不同的版本,请保证该变量始终是相同的。inno setup可以帮助生成GUID格式的AppId。

而[Files]段是描述了拷贝文件的路径和方式,例如下面的

Source : “{#SourcePath}\WinGather.exe”; DestDir: “{app}”; Flags: ignoreversion

意思就是把 SourcePath 定义的目录下的 WinGather.exe 程序拷贝到程序的安装目录下。{app} 是一个系统变量,表示程序在用户机器上的安装目录。ignoreversion 是在拷贝的过程中忽略版本的不同。

如果一个应用中有很多个文件需要拷贝,有的还包括子目录,都这样写就会很琐碎。于是就有这样的版本:

Source: “{#SourcePath}\ccprompt\*”; DestDir: “{app}\ccprompt”; Flags:ignoreversion recursesubdirs

从这里我们可以看到通配符*的使用,这样就会方便很多哟。此外,recursesubdirs 参数表示如果包含子目录的话,那么连同子目录也一起拷贝。这样 [Files] 就会少很多,尽管有通配符的支持,但是实际应用中要看情况而定,目的是为了避免安装包拷贝时的准确性,如果安装不对劲,也方便查找定位原因。

[run]段的作用是描述在安装的最后一步所要做的操作,多用于启动服务或者清理等操作,例如下面的:

Filename:”net.exe”; Parameters:”stop ccsdk”; Flags:waituntilterminated runhidden runascurrentuser;

这个例子就是调用 net 来停止一个叫做 ccsdk 的服务,同时有3个额外的选项,分别表示等这个操作完成后再进行后续的安装,不显示界面,以当前用户即管理员权限运行。如果运行一个命令行或者批处理,如果不使用 runhidden,那么在界面上就会看到有一个窗口一闪而过,体验不是很好。

[uninstallDelete]段的作用是描述在卸载的时候,要删除的文件,多用于程序在运行期间产生的文件例如日志、临时文件等,例如:

Type:filesanddirs; Name:”{app}\log.txt”

上面就是简单的描述了一下,inno setup其实非常简单,环境本身也提供了安装想到和帮助文档,文档里写的是非常的详细。所以我这里几乎没有什么内容可写。对于E文不懂的同学,可以在网上下一个中文版的帮助手册。最后说一下,inno setup的安装脚本是不区分大小写的。

分类: 日常 标签: , ,