如何使用 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...
实际上,正如此处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...