Example #1
0
        public void AddPendingInstallations(string id, SetupBuilder builder, bool addShortcurt)
        {
            if (!_dataServer.IsValueCreated)
            {
                _dataServer.Value.Start();
            }

            if (!_pendingOperations.TryAdd(id, new InstallerOperation(builder, () => _pendingOperations.TryRemove(id, out _))))
            {
                throw new InvalidOperationException("Adding to Pending Operations Failed");
            }

            var number        = Interlocked.Increment(ref _installerCount);
            var installerFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"HostInstaller{number}.zip");

            if (File.Exists(installerFile))
            {
                File.Delete(installerFile);
            }

            File.Copy(Path.GetFullPath("HostInstaller\\Installer.zip"), installerFile);
            HostConfiguration.WriteInTo(installerFile, _dataServer.Value.EndPoint.ToString() !, id, addShortcurt);

            Process.Start("explorer.exe", Path.GetDirectoryName(installerFile));
        }
Example #2
0
 public InstallerOperation(SetupBuilder builder, Action remove)
 {
     _builder    = builder;
     BuilderFunc = builder.Run;
     Timeout     = new Timer(_ =>
     {
         Sender?.Dispose();
         Sender = null;
         Result?.Dispose();
         Result = null;
         remove();
     }, null, TimeSpan.FromMinutes(30), System.Threading.Timeout.InfiniteTimeSpan);
 }