2013-09-06 5 views
2

VSIX 설치 도중이나 설치 후에 스크립트 (배치 파일, powershell 등)를 자동으로 실행할 수 있습니까? 나는 this problem을 해결하려고 노력하고 있는데, 이는 $ RootKey $ 밖에서 레지스트리에 값을 쓰는 것을 요구한다. 필요한 레지스트리 쓰기를 수행하기 위해 배치 또는 PowerShell 스크립트를 호출 할 수 있기를 바랍니다. 이미 스크립트를 작성 했으므로 VSIX를 설치하는 동안 어떻게 호출 할 수 있을지 모르겠습니다.VSIX 설치 중/후에 스크립트 실행?

이미 내 VSIX에 .pkgdef 파일이 있으므로 배치 스크립트를 실행하기 위해 파일 맨 아래에 "[PathToBatchScript] 시작"과 같은 작업을 수행 할 수 있기를 바랬지 만 작동하는 것 같습니다.

이전의 2010 VSIX 모델에서는 불가능했던 곳을 몇 곳 읽었지만 새로운 2012 모델로 변경되기를 기대합니다.

우리는 Visual Studio 2012를 사용하고 있습니다. 제안 사항에 감사드립니다. 감사.

답변

4

는 불행하게도 VSIX 제거/스크립트 설치 후 실행하는 방법은 없다 : 당신이 검색하는 경우이 MSDN에서

봐 당신이 VSIX으로 만 MSI에 의해 지원되지 않는 읽습니다 "구성 설치 중에". 나는 Vs2012에서 이것이 바뀌 었다고 생각하지 않는다.

public sealed class YourPackage : Package 
{ 
    protected override void Initialize() 
    { 
     base.Initialize(); 

     var dte = (DTE2)GetService(typeof(SDTE)); 
     _dteEvents = dte.Events.DTEEvents; 
     _dteEvents.OnStartupComplete += OnStartupComplete; 
     _dteEvents.OnBeginShutdown += OnBeginShutdown; 
    } 

    private void OnBeginShutdown() 
    { 
     _dteEvents.OnBeginShutdown -= OnBeginShutdown; 
     _dteEvents = null; 
     //Run your script 
    } 

    private void OnStartupComplete() 
    { 
     _dteEvents.OnStartupComplete -= OnStartupComplete; 
     _dteEvents = null; 
     //Run your script 
    } 

} 

가 한 번 실행 PowerShell 스크립트로 깔끔한되지 않습니다, 그러나 그것은 해결책 : 저도 같은 문제로 실행 해요 Howver,이 솔루션을 선택했다.

희망이 있습니다.

+1

@ JohnField에게 감사합니다. 이것은 나를 위해 잘 맞았습니다. 로드 할 때로드 될 수 있도록 클래스에 다음 특성을 추가해야합니다. 그렇지 않으면이 코드는 실행되지 않습니다. [ProvideAutoLoad ("ADFC4E64-0397-11D1-9F4E-00A0C911004F")]. 이 솔루션으로 VS를 열거 나 닫을 때마다 코드가 실행되기 때문에 스크립트가 아직 적용되지 않은 경우에만 스크립트를 실행하도록 간단한 체크를했습니다. 감사! – deadlydog

관련 문제