anchor.diff:        info.Arguments <- args) System.TimeSpan.MaxValue
     if result <> 0 then failwithf "Error during mage call "
   
  +/// Encapsulates the MAGE call to create a new application's manifest
   let MageCreateApp (mp : MageParams) =
     mageCall NewApp mp
   
  +/// Encapsulates the MAGE call to update an existing application's manifest
   let MageUpdateApp (mp : MageParams) =
     mageCall UpdateApp mp
   
  +/// Encapsulates the MAGE call to sign an application's manifest
   let MageSignManifest (mp : MageParams) =
     mageCall Sign mp
   
  +/// Encapsulates the MAGE call to deploy an application
   let MageDeployApp (mp : MageParams) =
     mageCall Deploy mp
   
  +/// Encapsulates the MAGE call to update the deployment of an application
   let MageUpdateDeploy (mp : MageParams) =
     mageCall UpdateDeploy mp
   
  +/// Encapsulates the MAGE call to sign the deployment of an application
   let MageSignDeploy (mp : MageParams) =
     mageCall SignDeploy mp
   
  +/// Executes a full run of MAGE commands: first, it creates a new manifest file. Then it signs the manifest, deploys the application and finally signs the deployment.
   let MageRun (mp : MageParams) =
     traceStartTask "Mage-Tool" mp.ApplicationFile
     MageCreateApp mp
  
positive.code:     ProviderURL : string 
      SupportURL : string option}
  
  let MageSerializeParams (action: MageCall) (mp : MageParams) =
    let processorStr =
      match mp.Processor with
      | MSIL -> "msil"
      | X86 -> "x86"
    
    let processor = "-p " + processorStr
    let name = if isNullOrEmpty mp.Name then "" else "-n \"" + mp.Name + "\""
  
negative.code:   allParameters
    |> separated " "
  
  /// Execute the MAGE tool. Adds some parameters, dependent on the MAGE command
  let mageCall (action : MageCall) (mp : MageParams) =
    let magePath = mp.ToolsPath @@ "mage.exe"
    let call =
  