在VSIX安装期间/之后运行脚本?

时间:2013-09-06 00:07:22

标签: registry install vsix

是否可以在VSIX安装期间或之后自动运行脚本(批处理文件,powershell等)?我正在尝试解决this problem,这需要在$ RootKey $之外的注册表中写入一个值。我希望我可以简单地调用批处理或PowerShell脚本来为我执行所需的注册表编写。我已经编写了脚本,我只是不确定在VSIX安装期间我是如何调用它们的。

我的VSIX中已经有一个.pkgdef文件,所以我希望我可以在该文件的底部执行类似“Start [PathToBatchScript]”的操作来运行我的批处理脚本,但它似乎没有工作。

我已经在一些地方读过,这对于旧的2010 VSIX型号来说是不可能的,但我希望它随着新的2012型号而改变。

我们正在使用Visual Studio 2012.任何建议都表示赞赏。感谢。

2 个答案:

答案 0 :(得分:5)

不幸的是,安装/卸载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脚本一样整洁,但它是一个解决方案。

希望它有所帮助。

答案 1 :(得分:0)

我可能聚会晚了,但是您可能要看看这个。 https://github.com/madskristensen/ProtocolHandlerSample

在此示例中,他们为其扩展添加了一个协议处理程序,该处理程序将在Windows注册表中。我认为您不仅仅可以添加协议处理程序,还可以拥有更多的功能。