3

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

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

我在一些地方读到,旧的 2010 VSIX 模型不可能做到这一点,但我希望它会随着新的 2012 模型而改变。

我们正在使用 Visual Studio 2012。感谢您提出任何建议。谢谢。

4

2 回答 2

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 脚本那样简洁,但它是一个解决方案。

希望能帮助到你。

于 2013-11-02T18:22:25.267 回答
0

我可能会迟到,但你可能想看看这个。 https://github.com/madskristensen/ProtocolHandlerSample

In this example they add a protocol handler to their extention, which is going to be in the Windows registry. I think you can a lot more with it than just adding a protocol handler.

于 2019-08-29T07:10:28.887 回答