如何使用 NSIS 卸载 VSIX 扩展?

How to uninstall VSIX extension using NSIS?

实际上,正如此处How to uninstall .vsix Visual Studio Extensions?所述,我必须这样调用:

vsixinstaller /u:12345678-1234-5678-1234-123456780000

但是,我不知道如何在 NSIS 脚本中获取 VSIXInstaller 的路径。

根据this blog,您可以在注册表中或使用 %vs###comntools% 环境变量找到路径。

Function GetVSIDEPath
Exch [=10=]
Push 
Push 
ExpandEnvStrings  "%VS[=10=]COMNTOOLS%"
IfFileExists "\?" "" tryReg
    GetFullPathName  "\..\..\IDE\"
    IfFileExists "\?" done
tryReg:
    IntOp [=10=] [=10=] / 10
    ReadRegStr  HKLM "SOFTWARE\Microsoft\VisualStudio$0.0" "InstallDir"
done:
StrCpy [=10=] 
Pop 
Pop 
Exch [=10=]
FunctionEnd

!include LogicLib.nsh

Section

Push 100 ; Visual Studio 2010
Call GetVSIDEPath
Pop [=10=]
${If} [=10=] != ""
    ExecWait '"[=10=]\vsixInstaller.exe" /u:12345678-1234-5678-1234-123456780000'
${EndIf}

SectionEnd

如果你支持多个版本Visual Studio你必须多次调用GetVSIDEPath+ExecWait...