工具
卸载之王Total Uninstall
绿化障碍
如果应用程序没有使用到串口,那么就不必使用MSCOMM32控件和VISA之类串口驱动程序。根据前人的经验,将应用程序放在Labview运行引擎文件夹中即可绿色运行,而且是狭义的纯绿色软件。
如果应用程序使用到串口,无论是MSCOMM32控件还是VISA,都需要修改注册表或者复制文件到系统盘中。按道理,将MSCOMM32控件单独注册一下就好了嘛,事实上,32位的应用程序调用MSCOMM32控件在32位操作系统上运行是没有问题的,但在64位操作系统上却出现了兼容性问题。
问题的解决
- 以兼容模式运行,失败了;
- 用64位应用程序调用MSCOMM32控件,失败了;
- 用64位应用程序调用VISA,绿化困难;
- 自己编写控件,耗费时间;
- 用32位应用程序调用MSCOMM32控件,成功了。
更换操作系统后程序无法正常运行,经过分析,这很可能是因为32位应用程序无法找到64位操作系统中的32位控件所致。但是NI公司不可能允许自己的程序出现兼容问题,因而我生成32位安装程序安装后,果然正常运行了。因此,安装程序肯定添加了某些文件或者进行了某些注册表的修改,从而可以有效定位控件,避免了兼容性问题的出现。
在此基础上,使用Total Uninstall软件通过系统快照分析出安装程序对系统的修改,经过多次删减最终找到了所需的文件和注册表修改内容。
一个坑
让我最终成功的是Labview生成的安装程序,导致我屡屡失败的也是Labview生成的安装程序。前者的原因已经交代了。后者是为什么呢?因为安装程序安装后,应用程序可以不放在运行引擎文件夹中就可以正常运行,所以我在删减过程中也不放在运行引擎中,结果不删减都没法运行。刚开始觉得肯定是自己少复制了。后来,屡屡弹出不能定位运行引擎时,就把应用程序放在运行引擎中,而不是放在安装程序的默认位置,然后才成功。
思维的转变
已知
A在“实现B”后,可以打开,也可以执行,却比较耗时;
A在“实现C”后,可以打开,而不能执行,但不太耗时;
困难
A,B,C都有现成的,但是“实现B”和“实现C”差的是那部分却是未知的。
旧思维“实现B”的过程改为手动,需要记录这个过程。然而“实现B”的过程复杂,记录的时候因为各种原因总是遗漏,导致A都不能打开,最终以失败告终。
新思维其实“实现B”的过程事实上实现了C,那么我们在C的基础上,将B的一些过程添加到C上,因为C虽然不能执行,但是可以打开,说明只是缺少了一点东西。
差异旧思维是正向思维,由零开始,寻找全部所需文件;新思维是逆向思维,由壹开始,删减不需要的文件。