如何调试Data Designer Extensibility (DDEX)

最近在开发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=%~2SHIFT & 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
posted @ 2011-07-13 16:26  ★火星人★  阅读(4404)  评论(2编辑  收藏  举报