是否可以在VSIX安装期间或之后自动运行脚本(批处理文件,powershell等)?我正在尝试解决this problem,这需要在$ RootKey $之外的注册表中写入一个值。我希望我可以简单地调用批处理或PowerShell脚本来为我执行所需的注册表编写。我已经编写了脚本,我只是不确定在VSIX安装期间我是如何调用它们的。
我的VSIX中已经有一个.pkgdef文件,所以我希望我可以在该文件的底部执行类似“Start [PathToBatchScript]”的操作来运行我的批处理脚本,但它似乎没有工作。
我已经在一些地方读过,这对于旧的2010 VSIX型号来说是不可能的,但我希望它随着新的2012型号而改变。
我们正在使用Visual Studio 2012.任何建议都表示赞赏。感谢。
答案 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注册表中。我认为您不仅仅可以添加协议处理程序,还可以拥有更多的功能。