在 vsix 安装期间添加注册表项

Add registry key during vsix installation

有什么方法可以在从 vsix 安装时动态添加注册表项?

例如:

假设我们有 SomeExtension.vsix。 它应该检查

下的 AnExisting.dll
C:\Program Files (x86)\Existing\AnExisting.dll
C:\Program Files (x86)\Existing2\AnExisting.dll

说它在现有文件夹下找到 然后添加

[HKEY_CURRENT_USER\Software]
"C:\Program Files (x86)\Existing"=""

我知道 pkgdef,但它似乎是一个常量值,即我们无法让它在正在安装的机器上动态更改。

或者说我们为 vsix 相应地设置 PRODUCT_HOME 以将值添加到注册表中,是否可以在正在安装的机器上获取环境变量?

这是我们可以做到的最简单的方法,尽管我不知道它会产生什么副作用。以下是批处理文件片段:

rem generate a pkgdef with the appropriate value
echo [HKEY_CURRENT_USER\Software] > MyBindingPaths.pkgdef
echo "%PRODUCT_HOME%"="" >> MyBindingPaths.pkgdef

rem *** Copy to VS extensions folder, this is a known location to look for pkgdef files ***
copy MyBindingPaths.pkgdef "%DEVENVDIR%Extensions"

echo *** Installing our VSIX ***
"%DevEnvDir%\vsixinstaller" -q SomeExtension.vsix

欢迎其他更好的建议。