我使用inno setup来安装我的小组创建的visual studio扩展。它安装得很好,但我无法通过inno安装程序卸载它。就像现在一样,用户必须通过Visual Studios手动卸载它。这是应该安装和卸载VSIX文件中的代码:使用inno setup卸载visual studio扩展
[Files]
Source: "MyExtension.vsix"; DestDir: "{app}"; AfterInstall:installVsix; Flags: ignoreversion recursesubdirs createallsubdirs
[UninstallRun]
Filename:"MyExtension.vsix"; WorkingDir: "{app}"; Parameters:"/q /a /u""{code:uninstallVsix}"; Flags: shellexec runascurrentuser
[Code]
procedure installVsix();
var
ErrorCode: Integer;
begin
if not ShellExec('', ExpandConstant('{app}\MyExtension.vsix'), '/q /a /i', '', SW_SHOW, ewNoWait, ErrorCode) then
begin
// handle failure if necessary
end;
end;
function uninstallVsix(parameters:String): String;
var
ErrorCode: Integer;
begin
ShellExec('', ExpandConstant('{app}\MyExtension.vsix'), parameters, '', SW_SHOW, ewNoWait, ErrorCode)
Result:=''
end;
现在我收到以下错误,当我卸载程序: 路径VSIX文件“的path.vsix”是无效的或你不没有必要的访问权限。请检查路径是否有效,并且您有访问权限。
我知道路径在卸载前是有效的。我不确定是否问题是文件在VsixInstaller能够运行之前被卸载,如果这是问题,那么我不知道如何要解决这个问题。
我是Inno Setup的新手,我真的不知道该怎么做。
我从来没有处理过这些扩展,所以我只能查看'[UninstallRun]'这样的条目。我会设置Filename:{app} \ MyExtension.vsix“',删除'WorkingDir',去掉'”{code:uninstallVsix}“'字符串(因为它写得不好,你应该从'代码]'或从[UninstallRun]',而不是两者),如果你缺少权限,我会尝试删除'runascurrentuser'标志。所以它会变成只是'文件名:“{app} \ MyExtension.vsix”;参数:“/ q/a/u”;标志:shellexec'。但是,这只是一个疯狂的猜测:-) – TLama