我已经在StackOverflow上查看了几个答案,我无法找到解决我目前面临的问题所需的确切内容
我正在使用Wix 3.8和Visual Studio 2008,并且创建了一个XML部署项目,Bundle.wxs文件看起来像这样。
这是我的Bundle.wxs文件
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<Bundle Name="SomeCompanyBundle"
Version="1.0.0.0"
Manufacturer="Some Company"
UpgradeCode="348d9d7c-6a37-44cd-8054-61b97777b5bd"
IconSourceFile="..\Some Company\logo_64.ico">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" >
<bal:WixStandardBootstrapperApplication
LicenseFile="..\Some Company\license-agreement.rtf"
LogoFile="..\Some Company\logo_64.png" />
</BootstrapperApplicationRef>
<Chain>
<!-- TODO: Define the list of chained packages. -->
<ExePackage Id="EXE_UsbDriversInstallerExe"
DisplayName="Driver Installer Executable"
Compressed="yes"
Cache="yes"
PerMachine="yes"
Permanent="no"
Vital="yes"
SourceFile="..\Some Company\Drivers-Installer.exe"
InstallCommand="/SILENT=YES"
/>
<!-- More MsiPackages are used in real Bundle.wxs, but they aren't included in this question, because they are working on install and uninstall -->
</Chain>
</Bundle>
</Wix>
这将创建一个名为SomeCompanyBundle.exe
的Bundle安装文件我可以通过命令提示符安装此捆绑包,例如SomeCompanyBundle.exe / quiet / install即不显示安装GUI。
我遇到的问题是卸载,这是由于Drivers-Installer.exe提供的命令行选项有限(这是来自第三方公司的旧的installer.exe文件,不存在)
唯一可用的选项是SILENT =(YES / NO)或LANG =(ENGLISH,SPANISH ....)。
此Drivers-Installer.exe不允许卸载操作。它有一个捆绑在Drivers-Installer.exe中的Uninstall.exe程序,只有在成功安装Drivers-Installer.exe后才能使用此Uninstall.exe
Uninstall.exe一旦安装,始终位于完整路径c:\ Program Files(x 86)\ SomeThirdPartyCompany \ Drivers-Installed \ Uninstall.exe
当我在使用命令提示符运行SomeCompanyBundle.exe / quiet / uninstall时需要卸载SomeCompanyBundle.exe时,如何运行此Uninstall.exe
我尝试的解决方案是:
1)UninstallCommand =“SILENT = YES”----由于上述原因,无法正常工作。
2)CustomAction -----对如何在Bundle卸载操作上运行Uninstall.exe感到困惑。
3)使用uil:DirectorySearch和util:RegistrySearch。我再次对如何在Bundle卸载操作上运行Uninstall.exe感到困惑。
任何有关示例/解释的帮助都将受到赞赏。
提前干杯。
答案 0 :(得分:1)
这是一个有趣的方法,你可以做到这一点。我做了类似的安装,安装后,在您运行的系统上的某个位置放置“uninstall.exe”以卸载产品。
使用util:FileSearch查看该产品是否已安装。
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To Range("CountofResponses")
Range("D1").Offset(i-1,0).Select
Selection.Copy
Range("A" & 1 + i).Select
'or you could use Range("A1").offset(i-1,0).Select
ActiveSheet.Paste
Next i
End Sub
您还应该向EXE_UsbDriversInstallerExe <util:FileSearch
Id="UsbDriversDirSearch"
Path="[ProgramFilesFolder]\SomeThirdPartyCompany\Drivers-Installed\Uninstall.exe"
Result="exists"
Variable="UsbDriversInstalled" />
添加DetectCondition="UsbDriversInstalled = 1"
这将阻止您尝试双重安装此产品。
创建第二个<ExePackage>
。
<ExePackage>
现在您将始终安装Uninstall.exe,并且可以在卸载捆绑包时卸载此ExePackage,因为它具有UninstallCommand。