最近在开发DDEX发现没有办法调试.问了好多个地方都没有答案....
终于让我找到调试的方法了.现在发出来和大家分享一下...
首先:在调试里选择启动外部程序 例:C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe
然后:在生事件里的后期生成事件里加上:"$(ProjectDir)\Install.cmd" /regroot SOFTWARE\Microsoft\VisualStudio\9.0 /codebase "$(TargetDir)$(TargetFileName)"
这个Cmd会用动两个文件一个就是注册DDEX的注册表文件一个是VBS文件
Cmd文件内容为:
@ECHO OFF
SETLOCAL
ECHO Oscar . DDEX Installation
SET MYDIR = %~dp0
SET RANU = No
SET REGROOT = SOFTWARE \ Microsoft \ VisualStudio \ 10 . 0Exp
SET CODEBASE =
:ParseCmdLine
IF " %1 " == "" GOTO Main
IF " %1 " == " /ranu " SET RANU = Yes& GOTO NextCmdLine
IF " %1 " == " /regroot " IF NOT " %~2 " == "" SET REGROOT = %~ 2 & SHIFT & GOTO NextCmdLine
IF " %1 " == " /codebase " IF NOT " %~2 " == "" SET CODEBASE = %~f2& SHIFT & GOTO NextCmdLine
IF " %1 " == " /? " GOTO Help
GOTO Help
:NextCmdLine
SHIFT
GOTO ParseCmdLine
:Main
IF " %CODEBASE% " == "" GOTO Help
ECHO Register as Normal User: %RANU%
ECHO VS Registry Root: %REGROOT%
ECHO Code base: %CODEBASE%
IF NOT EXIST " %CODEBASE% " (
ECHO The code base was not found .
GOTO End
)
IF NOT EXIST " %SystemRoot%\SysWOW64 " (
CScript " %MYDIR%\Install.vbs " // NoLogo %RANU% " %REGROOT% " " %CODEBASE% " " regedit "
) ELSE (
CScript " %MYDIR%\Install.vbs " // NoLogo %RANU% " %REGROOT% " " %CODEBASE% " " %SystemRoot%\SysWOW64\regedit "
)
ECHO Done!
GOTO End
:Help
ECHO Usage: install [ / ranu] [ / regroot ^ < regroot^ > ] / codebase ^ < codebase^ > [ / ?]
:End
ENDLOCAL
SETLOCAL
ECHO Oscar . DDEX Installation
SET MYDIR = %~dp0
SET RANU = No
SET REGROOT = SOFTWARE \ Microsoft \ VisualStudio \ 10 . 0Exp
SET CODEBASE =
:ParseCmdLine
IF " %1 " == "" GOTO Main
IF " %1 " == " /ranu " SET RANU = Yes& GOTO NextCmdLine
IF " %1 " == " /regroot " IF NOT " %~2 " == "" SET REGROOT = %~ 2 & SHIFT & GOTO NextCmdLine
IF " %1 " == " /codebase " IF NOT " %~2 " == "" SET CODEBASE = %~f2& SHIFT & GOTO NextCmdLine
IF " %1 " == " /? " GOTO Help
GOTO Help
:NextCmdLine
SHIFT
GOTO ParseCmdLine
:Main
IF " %CODEBASE% " == "" GOTO Help
ECHO Register as Normal User: %RANU%
ECHO VS Registry Root: %REGROOT%
ECHO Code base: %CODEBASE%
IF NOT EXIST " %CODEBASE% " (
ECHO The code base was not found .
GOTO End
)
IF NOT EXIST " %SystemRoot%\SysWOW64 " (
CScript " %MYDIR%\Install.vbs " // NoLogo %RANU% " %REGROOT% " " %CODEBASE% " " regedit "
) ELSE (
CScript " %MYDIR%\Install.vbs " // NoLogo %RANU% " %REGROOT% " " %CODEBASE% " " %SystemRoot%\SysWOW64\regedit "
)
ECHO Done!
GOTO End
:Help
ECHO Usage: install [ / ranu] [ / regroot ^ < regroot^ > ] / codebase ^ < codebase^ > [ / ?]
:End
ENDLOCAL
VBS文件内容为:
Main
Sub Main()
Dim WshShell
Set WshShell = WScript.CreateObject( " WScript.Shell " )
Dim fso
Set fso = WScript.CreateObject( " Scripting.FileSystemObject " )
Dim myDir
myDir = fso.GetParentFolderName(WScript.ScriptFullName)
Dim ranu
ranu = WScript.Arguments( 0 )
Dim regRoot
regRoot = WScript.Arguments( 1 )
If Right (regRoot, 1 ) = " \ " Then
regRoot = Left (regRoot, Len (regRoot) - 1 )
End If
If (ranu = " No " ) Then
regRoot = " HKEY_LOCAL_MACHINE\ " & regRoot
Else
regRoot = " HKEY_CURRENT_USER\ " & regRoot & " \Configuration "
End If
Dim codebase
codebase = WScript.Arguments( 2 )
Dim regFile
Dim genRegFile
Dim regFileContents
Set regFile = fso.OpenTextFile(myDir & " \OscarDDEXProvider.reg " , 1 )
Set genRegFile = fso.CreateTextFile(myDir & " \ExtendedProvider.gen.reg " , true )
regFileContents = regFile.ReadAll()
regFileContents = Replace (regFileContents, " %REGROOT% " , regRoot)
regFileContents = Replace (regFileContents, " %PROVIDERGUID% " , " {E19DB6D1-4DB4-4598-B4FE-26BE84F7D243} " )
regFileContents = Replace (regFileContents, " %CODEBASE% " , Replace (codebase, " \ " , " \\ " ))
genRegFile.Write(regFileContents)
genRegFile.Close()
regFile.Close()
Dim oExec
Set oExec = WshShell.Exec(WScript.Arguments( 3 ) & " /s "" " & myDir & " \ExtendedProvider.gen.reg"" " )
Do While oExec.Status = 0
WScript.Sleep( 100 )
Loop
fso.DeleteFile(myDir & " \ExtendedProvider.gen.reg " )
End Sub
Sub Main()
Dim WshShell
Set WshShell = WScript.CreateObject( " WScript.Shell " )
Dim fso
Set fso = WScript.CreateObject( " Scripting.FileSystemObject " )
Dim myDir
myDir = fso.GetParentFolderName(WScript.ScriptFullName)
Dim ranu
ranu = WScript.Arguments( 0 )
Dim regRoot
regRoot = WScript.Arguments( 1 )
If Right (regRoot, 1 ) = " \ " Then
regRoot = Left (regRoot, Len (regRoot) - 1 )
End If
If (ranu = " No " ) Then
regRoot = " HKEY_LOCAL_MACHINE\ " & regRoot
Else
regRoot = " HKEY_CURRENT_USER\ " & regRoot & " \Configuration "
End If
Dim codebase
codebase = WScript.Arguments( 2 )
Dim regFile
Dim genRegFile
Dim regFileContents
Set regFile = fso.OpenTextFile(myDir & " \OscarDDEXProvider.reg " , 1 )
Set genRegFile = fso.CreateTextFile(myDir & " \ExtendedProvider.gen.reg " , true )
regFileContents = regFile.ReadAll()
regFileContents = Replace (regFileContents, " %REGROOT% " , regRoot)
regFileContents = Replace (regFileContents, " %PROVIDERGUID% " , " {E19DB6D1-4DB4-4598-B4FE-26BE84F7D243} " )
regFileContents = Replace (regFileContents, " %CODEBASE% " , Replace (codebase, " \ " , " \\ " ))
genRegFile.Write(regFileContents)
genRegFile.Close()
regFile.Close()
Dim oExec
Set oExec = WshShell.Exec(WScript.Arguments( 3 ) & " /s "" " & myDir & " \ExtendedProvider.gen.reg"" " )
Do While oExec.Status = 0
WScript.Sleep( 100 )
Loop
fso.DeleteFile(myDir & " \ExtendedProvider.gen.reg " )
End Sub