iwhqnqsoif 发表于 2016-5-22 10:21:30

WTL Wizard for Visual Studio 2008

  WTL 正式版到现在还是8.0,虽然8.1已经提供下载,但我还是等正式版吧。
  在WTL 8.0中没有提供AppWiz For 2008, 我看了下,应该就是改下注册表就行了。
  google了下,CodeGem老兄已经提供了,我就试了下,没啥问题,就提供给大家。
  原文:http://codegem.org/2008/09/wtl-wizard-for-visual-studio-2008
   // Windows Template Library - WTL version 8.0// Copyright (C) Microsoft Corporation. All rights reserved.//// This file is a part of the Windows Template Library.// The use and distribution terms for this software are covered by the// Common Public License 1.0 (http://opensource.org/osi3.0/licenses/cpl1.0.php)// which can be found in the file CPL.TXT at the root of this distribution.// By using this software in any fashion, you are agreeing to be bound by// the terms of this license. You must not remove this notice, or// any other, from this software.// Setup program for the WTL App Wizard for VC++ 9.0 (2008)main();function main(){// Decode command line argumentsvar 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 enabledvar 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 elevatevar strParams = "\"" + WScript.ScriptFullName + "\"";if (bDebug)strParams += " /debug";strParams += " /elevated";Shell.ShellExecute(WScript.FullName, strParams, null, "RunAs");return;}// Create shell objectvar WSShell = WScript.CreateObject("WScript.Shell");// Create file system objectvar FileSys = WScript.CreateObject("Scripting.FileSystemObject");// Get the folder containing the script filevar 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 filestry{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 foundtry{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 foldervar 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 locationtry{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!");}
  大家保存到WTL80目录下的AppWiz下即可。
  如图:
页: [1]
查看完整版本: WTL Wizard for Visual Studio 2008