标签 WTL 下的文章

Win7x64 VC 6.0安装WTL 7.1

本机环境是Windows 7 Ultimate X64

VC版本6.0

WTL兼容VC 6.0的最后一个版本是7.1,所以到SF.NET下载7.1。结果发现官方已经不提供7.1下载了。还好网络上有下载

下载解压到 D:devwtl71 。

cmd下运行:

D:devwtl71AppWiz60>cscript setup.js

报错:

Microsoft (R) Windows Script Host Version 5.8 版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。 输入错误: 没有文件扩展“.js”的脚本引擎。 想起来是.js扩展名关联到了Notepad++,而非默认的cscript.exe。取消.js到Notepad++的关联。然后继续运行cscript setup.js 继续报错:

ERROR: Cannot find where Visual Studio 6.0 is installed.

打开setup.js分析代码,33~42行代码如下:

var strVC6Key = "HKLMSoftwareMicrosoftVisualStudio6.0SetupVsCommonDir";
try
{
    strValue = WSShell.RegRead(strVC6Key);
}
catch(e)
{
    WScript.Echo("ERROR: Cannot find where Visual Studio 6.0 is installed.");
    return;
}

catch异常后输出的错误信息是自定义的。我们将输出的信息修改为e.description:

WScript.Echo(e.description)

然后继续重新运行setup.js,报错信息成了:

注册键值 "HKLMSoftwareMicrosoftVisualStudio6.0SetupVsCommonDir" 的根路径无效。(Invalid root in registry key) 查看注册表发现存在键值HKEY_LOCAL_MACHINESOFTWARE**Wow6432Node**MicrosoftVisualStudio6.0SetupVsCommonDir,但是不存在HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio6.0SetupVsCommonDir。恍然大悟!cscript.exe在x64系统上有两个,指定运行32bit版本cscript.exe:C:WindowsSysWOW64cscript.exe setup.js提示成功(App Wizard successfully installed!)。

另外还有一种修改方法是手动将注册表路径加上“Wow6432Node”节点。

其实setup.js只干了一件事,就是将D:devwtl71AppWiz60AtlApp60.awx文件复制到VS6模版目录(本机为:D:vs6CommonMSDev98Template),通过“d:devwtl71AppWiz60>c:WindowsSysWOW64cscript.exe setup.js /debug”可以参看具体拷贝来源目标路径。所以手动拷贝和运行setup.js效果是一样的。

AtlApp60.awx是一个包含HTML、图片、JS、C++源码模版等资源的一个PE文件。高版本的WTL(7.5、8.0)已经将这些资源解压出来直接使用。因为VS7、8、9、10的模版机制发生了改变。如果想让WTL 8.0支持VC 6.0也不是不可能的。是否兼容尚待测试。不过我认为完全没必要这么做。安装一个高版本的VS时间效率高,也不用担心后期会出什么问题。因为有官方支持。