VS2008 添加ATL/WTL Wizard

(方便以后查阅)

 

1. 安装VS2008(VS2008VSTS)

2. 解压WTL80.exe(http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=e5ba5ba4-6e6b-462a-b24c-61115e846f0c)到VS2008的安装目录下的VC(如 C:/Program Files/Microsoft Visual Studio 9.0/VC)目录

3. 在AppWiz目录下创建setup90.js并有以下内容:

setup90.js//
main();

function main()
{
 // Decode command line arguments
 var bDebug = false;
 var bElevated = false;
 var Args = WScript.Arguments;
 for(var i = 0; i < Args.length; i++)
 {
  if(Args(i) == "/debug")
   bDebug = true;
  else if(Args(i) == "/elevated")
   bElevated = true;
 }

 // See if UAC is enabled
 var Shell = WScript.CreateObject("Shell.Application");
 if(!bElevated && Shell.IsRestricted("System", "EnableLUA"))
 {
  // Check that the script is being run interactively.
  if(!WScript.Interactive)
  {
   WScript.Echo("ERROR: Elevation required.");
   return;
  }

  // Now relaunch the script, using the "RunAs" verb to elevate
  var strParams = "/"" + WScript.ScriptFullName + "/"";
  if (bDebug)
   strParams += " /debug";
  strParams += " /elevated";
  Shell.ShellExecute(WScript.FullName, strParams, null, "RunAs");
  return;
 }

 // Create shell object
 var WSShell = WScript.CreateObject("WScript.Shell");
 // Create file system object
 var FileSys = WScript.CreateObject("Scripting.FileSystemObject");

 // Get the folder containing the script file
 var strValue = FileSys.GetParentFolderName(WScript.ScriptFullName);
 if(strValue == null || strValue == "")
  strValue = ".";

 var strSourceFolder = FileSys.BuildPath(strValue, "Files");
 if(bDebug)
  WScript.Echo("Source: " + strSourceFolder);

 if(!FileSys.FolderExists(strSourceFolder))
 {
  WScript.Echo("ERROR: Cannot find Wizard folder (should be: " + strSourceFolder + ")");
  return;
 }

 try
 {
  var strVC9Key = "HKLM//Software//Microsoft//VisualStudio//9.0//Setup//VC//ProductDir";
  strValue = WSShell.RegRead(strVC9Key);
 }
 catch(e)
 {
  try
  {
   var strVC9Key_x64 = "HKLM//Software//Wow6432Node//Microsoft//VisualStudio//9.0//Setup//VC//ProductDir";
   strValue = WSShell.RegRead(strVC9Key_x64);
  }
  catch(e)
  {
   WScript.Echo("ERROR: Cannot find where Visual Studio 9.0 is installed.");
   return;
  }
 }

 var strDestFolder = FileSys.BuildPath(strValue, "vcprojects");
 if(bDebug)
  WScript.Echo("Destination: " + strDestFolder);
 if(!FileSys.FolderExists(strDestFolder))
 {
  WScript.Echo("ERROR: Cannot find destination folder (should be: " + strDestFolder + ")");
  return;
 }

 // Copy files
 try
 {
  var strSrc = FileSys.BuildPath(strSourceFolder, "WTLAppWiz.ico");
  var strDest = FileSys.BuildPath(strDestFolder, "WTLAppWiz.ico");
  FileSys.CopyFile(strSrc, strDest);

  strSrc = FileSys.BuildPath(strSourceFolder, "WTLAppWiz.vsdir");
  strDest = FileSys.BuildPath(strDestFolder, "WTLAppWiz.vsdir");
  FileSys.CopyFile(strSrc, strDest);
 }
 catch(e)
 {
  var strError = "no info";
  if(e.description.length != 0)
   strError = e.description;
  WScript.Echo("ERROR: Cannot copy file (" + strError + ")");
  return;
 }

 // Read and write WTLAppWiz.vsz, add engine version and replace path when found
 try
 {
  var strSrc = FileSys.BuildPath(strSourceFolder, "WTLAppWiz.vsz");
  var strDest = FileSys.BuildPath(strDestFolder, "WTLAppWiz.vsz");

  var ForReading = 1;
  var fileSrc = FileSys.OpenTextFile(strSrc, ForReading);
  if(fileSrc == null)
  {
   WScript.Echo("ERROR: Cannot open source file " + strSrc);
   return;
  }

  var ForWriting = 2;
  var fileDest = FileSys.OpenTextFile(strDest, ForWriting, true);
  if(fileDest == null)
  {
   WScript.Echo("ERROR: Cannot open destination file" + strDest);
   return;
  }

  while(!fileSrc.AtEndOfStream)
  {
   var strLine = fileSrc.ReadLine();
   if(strLine.indexOf("Wizard=VsWizard.VsWizardEngine") != -1)
    strLine += ".9.0";
   else if(strLine.indexOf("WIZARD_VERSION") != -1)
    strLine = "Param=/"WIZARD_VERSION = 9.0/"";
   else if(strLine.indexOf("ABSOLUTE_PATH") != -1)
    strLine = "Param=/"ABSOLUTE_PATH = " + strSourceFolder + "/"";
   fileDest.WriteLine(strLine);
  }

  fileSrc.Close();
  fileDest.Close();
 }
 catch(e)
 {
  var strError = "no info";
  if(e.description.length != 0)
   strError = e.description;
  WScript.Echo("ERROR: Cannot read and write WTLAppWiz.vsz (" + strError + ")");
  return;
 }

 // Create WTL folder
 var strDestWTLFolder = "";
 try
 {
  strDestWTLFolder = FileSys.BuildPath(strDestFolder, "WTL");
  if(!FileSys.FolderExists(strDestWTLFolder))
   FileSys.CreateFolder(strDestWTLFolder);
  if(bDebug)
   WScript.Echo("WTL Folder: " + strDestWTLFolder);
 }
 catch(e)
 {
  var strError = "no info";
  if(e.description.length != 0)
   strError = e.description;
  WScript.Echo("ERROR: Cannot create WTL folder (" + strError + ")");
  return;
 }

 // Read and write additional WTLAppWiz.vsdir, add path to the wizard location
 try
 {
  var strSrc = FileSys.BuildPath(strSourceFolder, "WTLAppWiz.vsdir");
  var strDest = FileSys.BuildPath(strDestWTLFolder, "WTLAppWiz.vsdir");

  var ForReading = 1;
  var fileSrc = FileSys.OpenTextFile(strSrc, ForReading);
  if(fileSrc == null)
  {
   WScript.Echo("ERROR: Cannot open source file " + strSrc);
   return;
  }

  var ForWriting = 2;
  var fileDest = FileSys.OpenTextFile(strDest, ForWriting, true);
  if(fileDest == null)
  {
   WScript.Echo("ERROR: Cannot open destination file" + strDest);
   return;
  }

  while(!fileSrc.AtEndOfStream)
  {
   var strLine = fileSrc.ReadLine();
   if(strLine.indexOf("WTLAppWiz.vsz|") != -1)
    strLine = "..//" + strLine;
   fileDest.WriteLine(strLine);
  }

  fileSrc.Close();
  fileDest.Close();
 }
 catch(e)
 {
  var strError = "no info";
  if(e.description.length != 0)
   strError = e.description;
  WScript.Echo("ERROR: Cannot read and write WTL//WTLAppWiz.vsdir (" + strError + ")");
  return;
 }

 WScript.Echo("App Wizard successfully installed!");
}

4. 双击运行setup90.js

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值