Ejemplo n.º 1
0
        public async Task InstallNewPackage(PackageState packageState, LocalPackage package, string tribesExePath)
        {
            // Only one update or install may occur at once, if a second is attempted it will do nothing
            bool acquiredLock = await updateSemaphore.WaitAsync(0);

            if (!acquiredLock)
            {
                return;
            }

            try
            {
                List <RemotePackage> packages = new List <RemotePackage>();
                packages.Add(package.Remote);
                // Ensure dependencies are also installed
                packages.AddRange(packageState.GetPackageDependenciesForInstall(package).Select((p) => p.Remote));
                await InstallPackages(packages, tribesExePath);
            }
            finally
            {
                updateSemaphore.Release();
            }
        }
Ejemplo n.º 2
0
 public List <LocalPackage> GetPackageDependenciesForInstall(LocalPackage package) =>
 GetPackagesByIdRelevantForInstallOrUpdate(package.Remote.Dependencies).ToList();