2015-06-15 165 views
2

我使用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的新手,我真的不知道該怎麼做。

+0

我從來沒有處理過這些擴展,所以我只能查看'[UninstallRun]'這樣的條目。我會設置Filename:{app} \ MyExtension.vsix「',刪除'WorkingDir',去掉'」{code:uninstallVsix}「'字符串(因爲它寫得不好,你應該從'代碼]'或從[UninstallRun]',而不是兩者),如果你缺少權限,我會嘗試刪除'runascurrentuser'標誌。所以它會變成只是'文件名:「{app} \ MyExtension.vsix」;參數:「/ q/a/u」;標誌:shellexec'。但是,這只是一個瘋狂的猜測:-) – TLama

回答

1

.Vix是安裝程序,因此您使用InnoSetup安裝程序來安裝安裝程序,這很奇怪。 (文件夾C:\ Program Files(x86)\ Microsoft Visual Studio <版本> \ Common7 \ IDE).Vixix文件與.vsix安裝工具相關聯,名爲VSIXInstaller.exe。安裝後,擴展內部.vsix通過VS(位於文件夾C:\ Users \ <用戶> \ AppData \ Local \ Microsoft \ VisualStudio \ <版本> \ Extensions)被複制到一個隨機文件夾以避免與其他擴展。請注意,一旦安裝了擴展程序,它的.vsix安裝程序文件可能會被刪除!

要卸載您使用與/ u標誌VSIX安裝工具基於.vsix擴展(也有其他標誌安靜,等等)和擴展的標識:

VSIXInstaller.exe/U :{VSIXIdentifier}