最近在开发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