2013-11-20 72 views
2

有沒有辦法跳過鏈中的一個包?我看過「InstallCondition」並擁有這樣的代碼。威克斯跳鏈包中的鏈

     <ExePackage Id="RoboMongo" 
         DisplayName="RoboMongo" 
         Cache="no" 
         Compressed="no" 
         PerMachine="yes" 
         Permanent="no" 
         Vital="no" 
         Name="redist\Robomongo-0.8.4-RC2-i386.exe" 
         DownloadUrl="$(var.RoboMongoUrl)" 
         InstallCondition="ComponentSelect_5" 
         InstallCommand='/Action=Install' 
         UninstallCommand="/Action=Uninstall" 
         RepairCommand ="/Action=Repair" 
         DetectCondition="RoboMongoInstalled"> 

      <RemotePayload Description="Программа администрирования MongoDB" 
      Version ="0.8.4.2" 
       ProductName="RoboMongo" 
       Hash="71C17E48BC32304FA8724FFA7CA1C4C08891BC97" Size="7141182" /> 

但我不想在InstallCondition = false上卸載它。我只是想跳過它。

預先感謝您。

回答

4

如果您使用託管引導程序應用程序,則可以通過處理PlanPackageBegin事件來實現所需的行爲。代碼看起來大致是這樣的:

public MainViewModel(BootstrapperApplication bootstrapper) 
    { 
     bootstrapper.PlanPackageBegin += (sender, args) => 
     { 
      if (bootstrapper.Engine.StringVariables["ShouldSkipPackage"] == "1") 
       if (args.PackageId == "RoboMongo") 
        args.State = RequestState.None; 
     }; 
    } 
+0

是否還有一種乾淨的方式來跳過默認的Bootstrapper應用程序包?如果不能,將'跳過'委託給MSI?在我的情況下,我需要阻止通過cmdline參數升級捆綁MSI。 – Epstone