双击xxxx.air文件后AIR程序会安装,但是实际上是怎么回事呢,是与命令行执行
“Adobe AIR Application Installer.exe” absolutePathToYourAIRApp/xxxx.air
是相同的效果。 “Adobe AIR Application Installer.exe”为什么要用双引号括起来呢,是因为Windows command propmt里打命令名中有空格,所以必须要用双引号括起来。
这个命令还有另外两个参数 silent 和 uninstall:
-silent 用法
“Adobe AIR Application Installer.exe” -silent -logToStdout -eulaAccepted -location “C:\Program Files\xxxxxxx” xxxxxxxx.air
silent参数就是静默安装了,就是说不弹出安装对话框,悄悄地一步就安装完了。
logToStdout参数实际使用不需要,是把安装过程中的信息打到标准输出终端上,就是命令行上。
eulaAccepted参数中EULA是End User Licese Agreement,就是同意用户协议了,我绝对是同意的,可是没加这个参数也没见什么动静
location参数及后面指定的路径当然是安装路径了
xxxxxxxx.air当然是你的AIR程序安装文件了
-uninstall 用法 “Adobe AIR Application Installer.exe” -uninstall appInstaller.air xxxxx
uninstall后应该有两个参数,第一个可能是air安装文件,第二个不知道写什么。参数少会报not enough arguments,这样写确实会执行uninstall,因为报错说”uninstall时发生错误”
虽然我不知道uninstall参数的用法,但是想到另一种卸载方法。
如果你安装了一个air程序,必定会在windows控制面板的添加和删除程序里有这个程序,你点击删除会卸载,那么点击删除后发生了什么事呢,我搜索注册表发现了它调用的命令。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\YourAIRAppName
找到UninstallString项,其中的值就是删除命令:
MsiExec.exe /X{E824A28B-342F-B1C0-D90D-7EB4C668C083}
E824A28B-342F-B1C0-D90D-7EB4C668C083当然就是你程序的ID了。
MsiExec.exe是windows installer。
好了,现在安装和卸载都搞定了,哈哈哈。
Read the rest of this entry >>
升级到AIR1.5/SDK3.2后以前好好的程序现在抛出Error
Error #2044: Unhandled securityError:. text=Error #2048: Security sandbox violation:
……
Google了下发现有很多问这个问题的,但回答却不多。在这里发现答案:
http://www.johncblandii.com/2008/09/myspace-securityerrorevent-is.html
我的Flex app使用的是Socket连接,socket连接虽然成功但过20s左右就会报SecurityError,但连接实际上是成功了。我搜索到有人和我一样的状况哦:
SecurityError #2048 20 seconds after Socket closure.
所以如果你和我一样的状况可以考虑这样解决, 监听Socket的SecurityErrorEvent事件,在handler里什么也不做即可。怕不保险connect方法也用try/catch包起来。在Flex Document Language Reference里其实有写connect时候有可能会抛出SecurityError,但是以前不监听其实是没有问题的,直到升级到AIR1.5/SDK3.2才出了问题。
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleError);
private function handleError(event:SecurityErrorEvent):void{
// do nothing.
}
今天在Google Reader里看到这个消息,我也曾经有过在某些语言里实现PureMVC Framework,包括Javascript。
但是都没有动手,嘿嘿~
其中也有原因是因为Javascript需要用到这种Framework的机会比较小,换句话来说就是没有什么应用前景。
只有一些大型的Javascript项目才需要用Framework来保持项目的可控性,比如说Gmail,163Mail,一些网页游戏,但如果让我来开发这种项目,Framework不会采用PureMVC,一套东西并不适合所有的情况。Javascript我觉得最好是越简单越好,搞太多类自己看着都晕,别说写出来的代码让别人维护了。所以不一定非得分成Mediator,Command, Proxy,可以考虑把一些不必要的分层合在一起,至于这个标准怎么定,还得看是什么样的项目,根据需要自定义框架。
附下载地址
Library
Demo
参考:
http://puremvc.org/content/view/102/181/
迭代器模式提供一种方法顺序访问一个聚合对象的各个元素,而又不显露其内部的表示。
迭代器模式使用统一的方法访问聚合中的对象,可以编写多态的代码和这些聚合搭配,不用关心聚合是ArrayList还是数组。

参考:
Head First Design Patterns
曾经对比过Cairngorm和PureMVC,但详细的资料这里就不说了,对比两个框架总是仁者见仁,智者见智。
毕竟每个框架都有其特定的目标及其实现方法,目标不尽相同就不具可比性,而其优缺点与其实现方法有很大的关系。
总体来讲,Cairngorm比PureMVC要麻烦,分层太细,不如PureMVC灵活。但这句话不能涵盖它们所有的区别,毕竟我对Cairngorm的调查只是看了下文档,并通过它的Sample与PureMVC的Sample作了一个对比,实际使用并没有。有优点就有缺点,这是常识。
但是这里我们来看来自InsideRIA的一个调查数据,PureMVC以30%投票率最受支持,Cairngorm以其官方推荐的身份却屈居第二,这样的局面下我们不管PureMVC是不是最优的框架,但是说明绝对值得你关注的。
官方网站 http://puremvc.org/
中文文档 http://puremvc.org/component/option,com_wrapper/Itemid,183/
Framework&Demos Download http://trac.puremvc.org/PureMVC_AS3/
最后,不管是使用什么框架,关键还是编码的人需要提升自己的认识,框架只能起到辅助的作用。比如你用Struts,但并非所有人都把数据库相关的代码从View中分离,有人就是在Jsp中写数据库连接。所以说,框架只是辅助你更好的工作,如果你不看文档,不看这个框架该怎么用才能达到效果,即使用了框架也会乱掉。定义项目的编程规范很重要,但是实际过程中肯定还是会有人不看规范,有无意的有工作态度不够认真的有对规范本身有意见的,人是项目中最难管理的。
参考:
RIA框架大调查
Which Flex framework do you currently prefer?
刚才想在EmEditor里查找连续的空行,(\r\n){2,}匹配不上,原来EmEditor不支持多行模式的正则表达式。
去EmEditor的官网查到底行不行呢
“为什么EmEditor不高亮显示匹配的多行的字符呢?答案是为了提高性能。”
顺便粘几个常用的正则及EmEditor里的技巧:
这三个是后向引用的利用了
# Replace (abc) with [abc]
Find: \((.*?)\)
Replace: \[\1\]
# Replace <H3 …> with <H4 …>
Find: <H3(.*?)>
Replace: <H4\1>
# Replace 9/13/2003 with 2003.9.13
Find: ([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})
Replace: \3\.\1\.\2\.
下面两个利用了\U和\L,没有见过,应该是EmEditor特殊字符,而且只支持Professional版
# Uppercase characters from a to z (EmEditor Professional only)
Find: [a-z]
Replace: \U\0
# Capitalize all words (EmEditor Professional only)
Find: ([a-zA-Z])([a-zA-Z]*)
Replace: \U\1\L\2