注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

This is Ansifa

近期都不会更新绿色软件

 
 
 
 
 

日志

 
 

NSIS文件关联方案  

2010-10-24 03:09:49|  分类: 程序技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
概述:
利用NSIS编写的一个关联程序。包含头文件Assoc.nsh,还有一个测试例子以便理解调用方法。
能在标准安装的NSIS环境下编译,不需要任何外加插件和头文件。

能实现的功能:
1、以别名形式关联文件类型
如*.txt给予别名txtfile。打开方式在txtfile文件类型下面写,避免对*.txt注册表项产生过多干扰。

2、支持宏快速调用
无需理解关联过程,只需要调用“${Assoc} 扩展名 别名 文件类型描述 打开程序路径 图标路径”;“${UnAssoc} 扩展名”之类语句即可执行关联和取消关联操作。

3、可选支持关联备份恢复(开关:!define Backup)
能应对至少以下四种可能的关联方式:
* 本来无关联,此程序关联之后,取消关联时恢复无关联;
* 本来有程序关联,此程序关联之后,取消关联时恢复原程序关联;
* 本来关联到此程序,中途关联被抢夺。运行时自动识别为无关联,并且允许重新关联;
* 本来有用户自行选择的“Windows资源管理器”的打开方式式关联,此程序关联之后,取消关联时恢复原用户选择的打开方式关联;

4、能自动识别此程序当前关联某扩展名的状态,并且显示在组件选择框内${CheckSection}
以其别名前缀识别。比如txt文件的别名是“此程序工程名.扩展名”如Myprog.txt的时候,才认为程序已关联。
如果中途被改变为其他别名如txtfile能自动识别来自外部的更改。

5、可选支持强关联方式(开关:!define StrongAssoc)
使用强关联之后,注册表里面,扩展名(如.txt),别名如(txtfile)的任何更改,在“Windows资源管理器”下面都不会影响最终打开的程序为此程序。保护了程序关联不轻易被抢夺。

6、支持随时自定义文件类型图标。
- 即使程序已经编译。但是用户想随时改变一个类型的默认图标,怎么办呢?
- 现在有办法了:比如我要重定义*.txt类型文件图标。我只要新建一个“Icon”文件夹跟生成程序一起。在“Icon”文件夹下面放一个txt.ico的图标。重新执行一次关联操作。即可立即改变txt文件的默认图标为txt.ico。

7、充分支持测试与回显功能
!define Echo        ;回显关联动作
!define UnEcho      ;回显取消关联动作
!define WriteTest    ;写0字节测试文件到“生成程序所在文件夹\文件关联测试样本”文件夹下面,文件全名为“文件类型别名.扩展名”,以测试文件关联备注、图标、打开方式等情况
!define EchoUnSources  ;回显!insertmacro UnAssoc动作,用来生成卸载代码。比如我写了十行${Assoc}关联了十种类型文件,就需要生成对应的10个${UnAssoc},大量文件类型的时候关闭所有其他回显功能,自动生成!insertmacro UnAssoc语句可以方便粘贴到代码的取消关联部分。


注意!
由于此代码涉及到大量注册表修改,万一出错要撤销修改会很麻烦。所以程序测试请务必在虚拟机或者沙盘(Sandboxie)下完成。


所有相关文件与资料在下面:

http://nsisfans.googlecode.com/svn/trunk/%E4%BB%A3%E7%A0%81/%E6%96%87%E4%BB%B6%E5%85%B3%E8%81%94%E6%96%B9%E6%A1%88.7z
  评论这张
 
阅读(2339)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016