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 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!"); }

 

大家保存到WTL80目录下的AppWiz下即可。

如图:

WTL Wizard for Visual Studio 2008_第1张图片

你可能感兴趣的:(VC++6)