【发布时间】:2015-08-31 05:49:38
【问题描述】:
我正在使用 inno setup 来安装我的小组创建的 Visual Studio 扩展。它安装得很好,但我无法通过 inno setup 卸载它。就像现在一样,用户必须通过 Visual Studios 手动卸载它。这是应该安装和卸载 vsix 文件的代码:
[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}"字符串(因为它写得不好,你应该从[Code]或[UninstallRun]执行,而不是两者都执行),如果你错过了权限我会尝试删除runascurrentuser标志。所以它会变成Filename: "{app}\MyExtension.vsix"; Parameters: "/q /a /u"; Flags: shellexec。但是,这只是一个疯狂的猜测:-)
标签: visual-studio inno-setup visual-studio-extensions