public void InstallPlugin(string path, string name, PluginInstallUpdateCB updateCB, PluginInstallFinishCB doneCB, PluginInstallErrorCB errorCB) { string target = Path.Combine(ApplicationPaths.AppPluginPath, Path.GetFileName(path)); if (path.ToLower().StartsWith("http")) { // Initialise Async Web Request int BUFFER_SIZE = 1024; Uri fileURI = new Uri(path); WebRequest request = WebRequest.Create(fileURI); State requestState = new State(BUFFER_SIZE, target); requestState.request = request; requestState.fileURI = fileURI; requestState.progCB = updateCB; requestState.doneCB = doneCB; requestState.errorCB = errorCB; requestState.name = name; IAsyncResult result = (IAsyncResult)request.BeginGetResponse(new AsyncCallback(ResponseCallback), requestState); } else { File.Copy(path, target); InitialisePlugin(target); } // Moved code to InitialisePlugin() //Function needs to be called at end of Async dl process as well }
private void DownloadMSI(string path, PluginInstallUpdateCB updateCB, PluginInstallFinishCB doneCB, PluginInstallErrorCB errorCB) { localFile = Path.Combine(Path.GetTempPath(), Path.GetFileName(path)); // Initialise Async Web Request int BUFFER_SIZE = 1024; Uri fileURI = new Uri(path); WebRequest request = WebRequest.Create(fileURI); State requestState = new State(BUFFER_SIZE, localFile); requestState.request = request; requestState.fileURI = fileURI; requestState.progCB = updateCB; requestState.doneCB = doneCB; requestState.errorCB = errorCB; requestState.name = ""; IAsyncResult result = (IAsyncResult)request.BeginGetResponse(new AsyncCallback(ResponseCallback), requestState); }