同时安装两个版本以上的MC时,xmcd、mcd文件默认打开程序的设置
mathcad吧
全部回复
仅看楼主
level 12
朱老剑客 楼主
我为了能够同时用到MC2001的Maple符号运算核以及MC15的计算内存优化能力,在我的电脑上同时安装了MC2001和MC15这两个版本,结果发现所有的MC相关文件都指向了MC2001,也就是说我如果要打开xmcd或者xmcdz文件(这两个文件格式较mcd格式更节省内存使用空间,进而降低系统负荷,增加了计算容量),我必须先打开MC15之后从“文件—打开”这条路子去打开它们,绕远,不方便。
我尝试调整MC2001和MC15M020的安装顺序,没有用。所有的Mathcad文件都默认由Mathcad Aplication程序集打开,而MC2001的安装直接修改了Windows注册表,MC15使用了.net FRAMEWORK构架,所有行为都在构架上执行,与注册表关系不大,则表现得更像一个绿色软件,因此Windows默认使用MC2001打开所有MC文件。这样首先是xmcd或xmcdz文件无法直接打开,第二是MC的注册表项故障导致之后启动MC2001及Maple符号核相关计算程序出现卡死。
在MC13或MC14和MC15同时安装的情况下,因为都是用FRAMEWORK构架,也会出现默认打开程序混乱的现象,但至少不会影响程序进程本身的运行。
为了解决这个问题,我今天找到一个方法,和大家分享:
1、修改MC2001主程序mathcad.exe文件名为其他字母组合的名字(不要修改为比如说MathCad.exe),注意要保留.exe属性。注意,在盗版MC2001中,有两个MC执行程序,mathcad.exe和mcad.exe,mcad.exe是打包程序,将mathcad.exe与regsvr.dll文件打包后启动,以保证汉化后顺利加载许可。这个mcad.exe程序在安装之后只要运行一次就完成它所有的使命了,之后只要启动mathcad.exe程序即可通过windows注册表默认加载许可dll文件。所以在MC2001中,mathcad.exe程序是主程序。
2、修改文件名后,右键点击任何一个.xmcd文件,查看属性,属性框中说没有相关程序能够打开此文件,但此时文件的图标仍旧是MC2001的。这时选择默认打开方式——打开MC15安装文件夹,选择MC15中的mathcad.exe程序。
3、观察.xmcd文件图标变更为MC15的图标了。此时双击程序文件,即可顺利用MC15打开。
4、此时由于MC2001中的主程序被修改了文件名,与注册表中的键值名不符,所以MC2001无法运行。回到MC2001文件夹,将刚才修改了文件名的主程序名再一次修改为mathcad.exe,就没问题了。
此时windows的注册表默认的mathcad application是MC15,已顺利注册。
主要是我一般只有在需要用到比较麻烦的符号推导时才会用到maple的符号计算内核,大部分时间MC2001使用不到的,终归它处理大数据的效率不太高。
I
2013年09月16日 01点09分 1
level 12
朱老剑客 楼主
我找到了一个更好用的办法。
朋友们都还记得安装MC2001汉化版的时候,在安装说明里提到的“在打完汉化补丁之后,运行安装目录里的regtool.exe进行组件注册“,这句话吧?我一直有些纳闷儿,为什么非要自己再给自己注册一次呢?今天我找到答案了。
由于这两天寻找MathConnex,我的电脑上现在同时安装了MC15、MC11、MC2001i、MC2001和MC2000,这就产生这个帖子里说到的由于版本太多,难以识别MC文件的默认打开程序的问题,注册表都被写乱了。尤其是当你用第三方程序调用MC的时候,可能它所调用的并不是你想让它调用的。
嗯,考察一下这几个版本MC的根目录中的.exe文件,你会发现,mathcad.exe这个主程序文件肯定都有啦,不管是哪个版本的mathcad.exe在注册表中的声明都是一样的——mathcad application,而windows给文件类型分派默认打开程序,外部程序识别MC的安装路径,都是靠这个声明,一个声明只能对应一个.exe文件的安装路径,而同时有那么多的mathcad.exe使用了同一个声明,这就是产生混乱的根本原因吧。
另外还有一个newdict.exe,在所有的根目录里都有,但做什么用的我不太清楚,从名字上看好像是开出一个新文件夹,做程序初始化的?不太清楚了。
还有MC11、MC15中有一个mcmreg.exe,我也不知道是干什么用的,它使用的文件扩展名是.mcm,mathcad user component,可能是自定义组件吧。MC11之后用户可以用VBS或者JS自己编写外链组件并保存。这个执行程序可能就是给自定义组件做声明的。
再看看其他的:
MC2000到MC11目录中都有mcad.exe,这个是启动先导文件,负责启动之前打包的(将MC和maple运算内核、组件、插件选项绑定),同时我们在启动MC的时候总会出现短暂的欢迎画面,不同版本的欢迎画面不一样,都是mcad给出来的。而这个mcad.exe本身不在注册表里有声明项,它只是mathcad.exe的侍应生。而且当绕过mcad.exe直接启动mathcad.exe时,mcad.exe会连带启动,只不过整个启动过程要慢一些。
这个程序在MC15中没有,说明打包功能已经被整合在mathcad.exe文件里了。
MC2000到MC2001i,目录中都有regtool.exe,这个程序是帮助mathcad.exe在注册表中发表声明的,同时有那么多版本,你想把哪个版本作为主版本,就运行哪个版本的regtool.exe文件,发表了一个声明,告诉windows它是默认的mathcad application。
在MC安装版里,regtool.exe程序是在安装过程中就运行完毕的,所以我们安装完之后就可以直接用。但在绿化版里,这个声明需要我们手动完成。
查一下MC2001的汉化补丁,你会发现它汉化替代的都是MC的主要dll文件,伤筋动骨的,所以要再次向注册表发表声明。
MC2001i的盗版是绿色免安装文件,解压到一个文件夹后,运行regtool.exe之后,就可以正常使用,如果不发表声明的话,你会发现你在MC2001i中输入的等式无法求值。MC的数值运算和符号运算需要其自带的dll文件与自己的计算内核发生联络,这个过程需要windows的Rundll.exe文件的支持,在windows未得到MC的声明的情况下,MC的主文件便仅仅是一个mathtype了。
另外MC2001i还有一点给人启发,就是MC可以做成绿色软件,只要把安装目录单独保存,使用的时候启动regtool.exe声明一下就可以了。而且MC2001i的下载包里还有一个SN.txt,可根本用不着,绿化后自己就破解了,根本不用再输入注册码。
嗯,在MC15中,register.exe或者regtool.exe文件的功能被3个程序文件承担了,分别是:
mcregister.exe(发布声明)
SaveRegTest.exe(验证声明是否成功)
EnableExtPacks.exe(发布外链接口声明,这个声明是用来保证mupad、excel、smartsketch等等组件可以顺利使用的,同时如果外部程序调用了mc,也需要这个声明发生作用)
如此呢,MC15的运行稳定性(MC14的文件结构也是如此)正是靠将原来一个程序的活儿分给了三个程序来做而达到的。
嗯,分析了这么多,我是想说,如果你遇到了多版本共存的麻烦,就得考虑选择用哪个mathcad.exe作为系统默认的主程序,只要到它的安装目录里运行那几个声明exe文件就可以了。MC15的声明一定要按照上面列出的顺序将3个文件都运行一遍,否则可能会有问题。I
2013年11月03日 13点11分 2
level 10
楼主你好,请我我装的是MC15版的,怎么打开mcd格式的呀
2015年11月12日 01点11分 3
level 12
朱老剑客 楼主
双击。
2015年11月12日 02点11分 4
level 11
或者可以通过手动在注册表中给xmcd文档得右键菜单上添加两条命令“用mc2001打开”和“mc15打开”,想用哪个打开就点哪个。
2015年11月12日 04点11分 5
1