写了一个能实现文件关联的头文件,可以令NSIS编写关联文件代码更方便.
而且能完美解决各种重复关联,重复取消关联所引起的错误.
1. 关联多个文件为一个类型,如关联"*.rmvb"为"Real 媒体文件";
2. 同时关联多个文件为一个类型,如"*.rmvb;*.rm;*.ra;*.rv"为"Real 媒体文件";
3. 关联的文件可以分为(1)需要注册对象容器媒体文件(2)不需要注册对象容器普通文件;
4. 取消文件关联,支持同时取消上述的多个文件关联的操作.
5. 取消关联后可选择 恢复/不恢复 旧有关联.
答问:
4楼zhfi:
1. DeleteRegValue HKCR ".$R5" ""不错,改好了~~~
2. 将"播放(&P)"定义成一个变量?考虑过,不过这样每次进行
!insertmacro Assoc aac,a4c,m4a "MP4" "AAC-MPEG Layer 4 音频" $exe "$Me"
都要加上一个
!insertmacro Assoc aac,a4c,m4a "MP4" "AAC-MPEG Layer 4 音频" $exe "$Me" "播放"
似乎冗余很大,不如直接去改Assoc.nsh方便
8楼zhfi:
此脚本已经将关联操作备份到
WriteRegStr HKCR "Back.${Project}" ".扩展名"
而且解决了备份/恢复要处理的各种问题.
* 备份/恢复要处理的问题情况大概有(就是此代码能处理下面情况):
(下面为了方便说明,指使用了此代码的程序为a.exe,另有一个b.exe.大家都会对*.jpg进行关联,而在此之前*.jpg关联于c.exe)
1. 假设某时刻a.exe关联了*.jpg,将会备份*.jpg的旧关联为c.exe,取消关联时恢复*.jpg关联为c.exe.
2. 假设某时刻a.exe关联了*.jpg,并备份*.jpg的旧关联为c.exe.
但a.exe关联后,b.exe夺取了*.jpg的关联.当执行a.exe取消关联时,a.exe会检测关联,
因为关联已经被b.exe夺取,所以不能恢复*.jpg关联为c.exe.只能忽略而过.让b.exe继续关联*.jpg
3. 假设某时刻a.exe关联了*.jpg,并备份*.jpg的旧关联c.exe.但a.exe关联后,
b.exe夺取了*.jpg的关联.然后再次执行a.exe关联*.jpg,应该将备份的关系"*.jpg的旧关联为c.exe"改为"*.jpg的旧关联为b.exe"
zhfi:
既然你坚持,就加个吧~~~哈哈
cnm512 :
原来是恢复关联时删除了*.{ext}下的全部值,导致打不开,跟4楼zhfi的问题原来是一个问题~~哈哈~~这次真的改好了
现在是:删除*.{ext}下默认值,然后判断*.{ext}子项是否为空,是则删除项*.{ext}.然后恢复.
你再试试行不...