Example #1
0
        private IEnumerator Launch()
        {
            Pathfinder = new World.Pathfinder(Constants.GridColumns, Constants.GridRows);
            MainCanvas = GameObject.FindGameObjectWithTag("HudCanvas").GetComponent <Canvas>();
            Inventory  = gameObject.AddComponent <UI.Hud>();
            Scene      = gameObject.AddComponent <World.Builder>();
            Player     = Character.SpawnPlayer(Constants.StartingPosition, GameObject.Find("Screens").transform);
            Shield     = Player.GetComponentInChildren <Shield>(true);
            Sword      = Player.GetComponentInChildren <Sword>(true);
            Suit       = Player.GetComponentInChildren <Suit>(true);
            var currentX = Constants.StartingTiles[0];
            var currentY = Constants.StartingTiles[1];

            Scene.CurrentX = currentX;
            Scene.CurrentY = currentY;
            if (!IsDebugMode)
            {
                yield return(Scene.PanScreen(new ViewModel.Grid {
                    X = currentX,
                    Y = currentY,
                    Name = Constants.StartingTile
                }));
            }

            Player.gameObject.SetActive(true);
            OnLaunch?.Invoke(this, EventArgs.Empty);
        }
Example #2
0
    public void Launch()
    {
        if (!isInitialised)
        {
            return;
        }

        OnLaunch?.Invoke(this);

        StartCoroutine(Play());
    }
        private void CheckLaunch(AttackData attackData)
        {

            if (characterMovement.IsGrounded() == true && attackData.AttackDataStat.UserPosition.y-1 <= this.transform.position.y)
            {
                if (airborne == false)
                {
                    airborne = true;
                    characterMovement.ResetSpeedY();
                    characterMovement.Jump(5f - characterStatController.GetStat(statMass));
                    if(airborneClip != null)
                        AudioManager.Instance.PlaySound(airborneClip);
                    if (OnLaunch != null) OnLaunch.Invoke();
                }
            }
            else if(airborne == true && bounce == false && attackData.AttackDataStat.UserPosition.y - 1 < this.transform.position.y) // Under the character
            {
                if (characterMovement.SpeedY <= 0)
                {
                    characterMovement.ResetSpeedY();
                    //characterMovement.Jump(2f);
                }
                if (characterMovement.SpeedY < 4f)
                {
                    //characterMovement.ResetSpeedY();
                    characterMovement.Jump(1.5f);
                }

                if (airborneClip != null)
                    AudioManager.Instance.PlaySound(airborneClip);
                if (OnHitAerial != null) OnHitAerial.Invoke((int)Random.Range(attackData.AttackDataStat.FeverValue, attackData.AttackDataStat.FeverValueMax));
            }
            else if (airborne == true && bounce == false && attackData.AttackDataStat.UserPosition.y + 1 >= this.transform.position.y) // Smackdown
            {
                bounce = true;
                if (OnSmackdown != null) OnSmackdown.Invoke();
            }
            else if (characterAnimation.State == CharacterState.Jump && airborne == false && attackData.AttackDataStat.UserPosition.y - 1 <= this.transform.position.y) // Si l'ennemi a sauté et qu'on le knockback dans les air c'est bon
            {
                airborne = true;
                characterMovement.ResetSpeedY();
                characterMovement.Jump(5f - characterStatController.GetStat(statMass));
                if (airborneClip != null)
                    AudioManager.Instance.PlaySound(airborneClip);
                if (OnLaunch != null) OnLaunch.Invoke();
            }
        }
Example #4
0
        public void Launch()
        {
            IsLaunched = true;

            OnLaunch?.Invoke();

            while (IsLaunched)
            {
                if (int.TryParse(Console.ReadLine(), out int index))
                {
                    try
                    {
                        if (index == _exitCode)
                        {
                            Stop();
                            break;
                        }

                        TElement element = _elements[index - LeftOffset];

                        OnValid?.Invoke(element);
                    }
                    catch (IndexOutOfRangeException)
                    {
                        OnIndexOut?.Invoke(index);
                    }
                    catch (Exception exception)
                    {
                        OnError?.Invoke(exception);
                    }
                }
                else
                {
                    Console.WriteLine(LocalizationService.CurrentReader["InvalidInputData"]);
                }
            }
        }
        public override void Launch(Response response, dynamic arguments)
        {
            OnAdapterMessage?.Invoke(this, "[Launch]");
            if (DebugAdapterStatus != DebugAdapterStatusEnum.WaitingForEngineReady)
            {
                throw new InvalidOperationException("Launch failed, engine already running");
            }
            OnLaunch?.Invoke(this, arguments);
            sourceMap.Clear();
            if (arguments.sourceMap != null)
            {
                foreach (var item in arguments.sourceMap)
                {
                    sourceMap.Add((string)item.name, (string)item.value);
                }
            }
            bool pauseOnLaunch = arguments.pauseOnLaunch ?? false;

            if (pauseOnLaunch)
            {
                debuggingService.RequestAsyncBreak();
            }
            SendResponse(response);
        }
Example #6
0
    public void Launch()
    {
        OnLaunch?.Invoke();

        GetComponent <Rigidbody>().AddForce(transform.forward * launchSpeed, ForceMode.VelocityChange);
    }
Example #7
0
 private void Start()
 {
     Log.Info($"Start {Job.Name}");
     OnLaunch?.Invoke(this);
     State = NodeState.INPROGRESS;
 }
Example #8
0
        /***************************************************************************
        *
        * Private Methods
        *
        ***************************************************************************/

        private async void Generate_File_Button_Click(object sender, RoutedEventArgs e)
        {
            //Check that all required fields have been filled
            if (!_validateInput())
            {
                return;
            }

            var savePicker = new Windows.Storage.Pickers.FileSavePicker
            {
                SuggestedStartLocation =
                    Windows.Storage.Pickers.PickerLocationId.Desktop
            };

            // Dropdown of file types the user can save the file as
            savePicker.FileTypeChoices.Add("APPINSTALLER file", new List <string>()
            {
                ".appinstaller"
            });
            // Default file name if the user does not type one in or select a file to replace

            Windows.Storage.StorageFile file = await savePicker.PickSaveFileAsync();

            try
            {
                var t = Task.Run(async() =>
                {
                    var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite);

                    //Create file
                    //FileStream writer = new FileStream(file.Path, FileMode.OpenOrCreate);

                    AppInstaller appInstaller = new AppInstaller(App.AppInstallerFilePath, App.AppInstallerVersionNumber);

                    XmlWriterSettings settings = new XmlWriterSettings
                    {
                        Indent              = true,
                        OmitXmlDeclaration  = false,
                        NewLineOnAttributes = true,
                        Encoding            = Encoding.UTF8,
                        NamespaceHandling   = NamespaceHandling.OmitDuplicates
                    };

                    var fs = fileStream.AsStreamForWrite();
                    fs.SetLength(0);


                    XmlWriter xdw = XmlWriter.Create(fs, settings);

                    //DataContractSerializer appInstallerDCS = new DataContractSerializer(typeof(AppInstaller));

                    //AppInstaller Content
                    //appInstallerDCS.WriteStartObject(xdw, appInstaller);
                    xdw.WriteStartElement("", "AppInstaller", App.AppInstallerFileSchemaNamespace);

                    //xdw.WriteAttributeString("xmlns", );
                    xdw.WriteAttributeString("Version", App.AppInstallerVersionNumber);
                    xdw.WriteAttributeString("Uri", App.AppInstallerFilePath);


                    //Main Package Content
                    if (App.MainPackage.PackageType == PackageType.MSIX)
                    {
                        //DataContractSerializer mainPackageDCS = new DataContractSerializer(typeof(MainPackage));

                        //mainPackageDCS.WriteStartObject(xdw, _mainPackage);

                        xdw.WriteStartElement("MainPackage");

                        xdw.WriteAttributeString("Name", _mainPackage.Name);
                        xdw.WriteAttributeString("Publisher", _mainPackage.Publisher);
                        xdw.WriteAttributeString("Version", _mainPackage.Version);
                        if (_mainPackage.ResourceId != "")
                        {
                            xdw.WriteAttributeString("ResourceId", _mainPackage.ResourceId);
                        }
                        if (_mainPackage.ProcessorArchitecture != "" && _mainPackage.PackageType != PackageType.MSIXBUNDLE)
                        {
                            xdw.WriteAttributeString("ProcessorArchitecture", _mainPackage.ProcessorArchitecture.ToString());
                        }
                        xdw.WriteAttributeString("Uri", _mainPackage.FilePath);
                        xdw.WriteEndElement();
                        //mainPackageDCS.WriteEndObject(xdw);
                    }
                    else if (App.MainPackage.PackageType == PackageType.MSIXBUNDLE)
                    {
                        //DataContractSerializer mainBundleDCS = new DataContractSerializer(typeof(MainBundle));
                        MainBundle mainBundle = new MainBundle(App.MainPackage.FilePath, App.MainPackage.Version, App.MainPackage.Publisher, App.MainPackage.Name);
                        //mainBundleDCS.WriteStartObject(xdw, mainBundle);
                        xdw.WriteStartElement("MainBundle");

                        xdw.WriteAttributeString("Name", mainBundle.Name);
                        xdw.WriteAttributeString("Publisher", mainBundle.Publisher);
                        xdw.WriteAttributeString("Version", mainBundle.Version);
                        xdw.WriteAttributeString("Uri", mainBundle.FilePath);
                        //mainBundleDCS.WriteEndObject(xdw);
                        xdw.WriteEndElement();
                    }

                    //Optional Packages Content
                    ObservableCollection <OptionalPackage> optionalPackages = App.OptionalPackages;
                    //DataContractSerializer optionalPackageDCS = new DataContractSerializer(typeof(OptionalPackage));

                    //Modification Packages Content
                    ObservableCollection <ModificationPackage> modificationPackages = App.ModificationPackages;

                    bool hasOptionalPackage     = (optionalPackages.Count > 0 && App.IsOptionalPackages);
                    bool hasModificationPackage = (modificationPackages.Count > 0 && App.IsModificationPackages);

                    if (hasOptionalPackage || hasModificationPackage)
                    {
                        xdw.WriteStartElement("OptionalPackages");
                        //optionalPackageDCS.WriteStartObject(xdw, optionalPackages[0]);
                        if (hasOptionalPackage)
                        {
                            for (int i = 0; i < optionalPackages.Count; i++)
                            {
                                //Write package or bundle element
                                if (optionalPackages[i].PackageType == PackageType.MSIX)
                                {
                                    Package package = new Package(
                                        optionalPackages[i].FilePath,
                                        optionalPackages[i].Version,
                                        optionalPackages[i].Publisher,
                                        optionalPackages[i].Name,
                                        optionalPackages[i].PackageType,
                                        optionalPackages[i].ProcessorArchitecture
                                        );

                                    //DataContractSerializer packageDCS = new DataContractSerializer(typeof(Package));
                                    xdw.WriteStartElement("Package");
                                    //packageDCS.WriteStartObject(xdw, package);
                                    xdw.WriteAttributeString("Version", package.Version);
                                    xdw.WriteAttributeString("Uri", package.FilePath);
                                    xdw.WriteAttributeString("Publisher", package.Publisher);
                                    if (package.ProcessorArchitecture != "" && package.PackageType != PackageType.MSIXBUNDLE)
                                    {
                                        xdw.WriteAttributeString("ProcessorArchitecture", package.ProcessorArchitecture.ToString());
                                    }
                                    xdw.WriteAttributeString("Name", package.Name);
                                    //packageDCS.WriteEndObject(xdw);
                                    xdw.WriteEndElement();
                                }
                                else if (optionalPackages[i].PackageType == PackageType.MSIXBUNDLE)
                                {
                                    Bundle bundle = new Bundle(
                                        optionalPackages[i].FilePath,
                                        optionalPackages[i].Version,
                                        optionalPackages[i].Publisher,
                                        optionalPackages[i].Name,
                                        optionalPackages[i].PackageType
                                        );

                                    //DataContractSerializer bundleDCS = new DataContractSerializer(typeof(Bundle));
                                    //bundleDCS.WriteStartObject(xdw, bundle);
                                    xdw.WriteStartElement("Bundle");
                                    xdw.WriteAttributeString("Version", bundle.Version);
                                    xdw.WriteAttributeString("Uri", bundle.FilePath);
                                    xdw.WriteAttributeString("Publisher", bundle.Publisher);
                                    xdw.WriteAttributeString("Name", bundle.Name);
                                    //bundleDCS.WriteEndObject(xdw);
                                    xdw.WriteEndElement();
                                }
                            }
                        }

                        if (hasModificationPackage)
                        {
                            for (int i = 0; i < modificationPackages.Count; i++)
                            {
                                //Write package or bundle element
                                if (modificationPackages[i].PackageType == PackageType.MSIX)
                                {
                                    Package package = new Package(
                                        modificationPackages[i].FilePath,
                                        modificationPackages[i].Version,
                                        modificationPackages[i].Publisher,
                                        modificationPackages[i].Name,
                                        modificationPackages[i].PackageType,
                                        modificationPackages[i].ProcessorArchitecture
                                        );

                                    //DataContractSerializer packageDCS = new DataContractSerializer(typeof(Package));
                                    //packageDCS.WriteStartObject(xdw, package);
                                    xdw.WriteStartElement("Package");
                                    xdw.WriteAttributeString("Version", package.Version);
                                    xdw.WriteAttributeString("Uri", package.FilePath);
                                    xdw.WriteAttributeString("Publisher", package.Publisher);
                                    if (package.ProcessorArchitecture != "" && package.PackageType != PackageType.MSIXBUNDLE)
                                    {
                                        xdw.WriteAttributeString("ProcessorArchitecture", package.ProcessorArchitecture.ToString());
                                    }
                                    xdw.WriteAttributeString("Name", package.Name);
                                    //packageDCS.WriteEndObject(xdw);
                                    xdw.WriteEndElement();
                                }
                                else if (modificationPackages[i].PackageType == PackageType.MSIXBUNDLE)
                                {
                                    Bundle bundle = new Bundle(
                                        modificationPackages[i].FilePath,
                                        modificationPackages[i].Version,
                                        modificationPackages[i].Publisher,
                                        modificationPackages[i].Name,
                                        modificationPackages[i].PackageType
                                        );

                                    //DataContractSerializer bundleDCS = new DataContractSerializer(typeof(Bundle));
                                    //bundleDCS.WriteStartObject(xdw, bundle);
                                    xdw.WriteStartElement("Bundle");
                                    xdw.WriteAttributeString("Version", bundle.Version);
                                    xdw.WriteAttributeString("Uri", bundle.FilePath);
                                    xdw.WriteAttributeString("Publisher", bundle.Publisher);
                                    xdw.WriteAttributeString("Name", bundle.Name);
                                    //bundleDCS.WriteEndObject(xdw);
                                    xdw.WriteEndElement();
                                }
                            }
                        }
                        //optionalPackageDCS.WriteEndObject(xdw);
                        xdw.WriteEndElement();
                    }

                    //Related Packages Content
                    ObservableCollection <RelatedPackage> relatedPackages = App.RelatedPackages;
                    //DataContractSerializer relatedPackageDCS = new DataContractSerializer(typeof(RelatedPackage));
                    if (relatedPackages.Count > 0 && App.IsRelatedPackages)
                    {
                        //relatedPackageDCS.WriteStartObject(xdw, relatedPackages[0]);
                        xdw.WriteStartElement("RelatedPackages");
                        for (int i = 0; i < relatedPackages.Count; i++)
                        {
                            //Write package or bundle element
                            if (relatedPackages[i].PackageType == PackageType.MSIX)
                            {
                                Package package = new Package(
                                    relatedPackages[i].FilePath,
                                    relatedPackages[i].Version,
                                    relatedPackages[i].Publisher,
                                    relatedPackages[i].Name,
                                    relatedPackages[i].PackageType,
                                    relatedPackages[i].ProcessorArchitecture
                                    );

                                //DataContractSerializer packageDCS = new DataContractSerializer(typeof(Package));
                                xdw.WriteStartElement("Package");
                                //packageDCS.WriteStartObject(xdw, package);
                                xdw.WriteAttributeString("Version", package.Version);
                                xdw.WriteAttributeString("Uri", package.FilePath);
                                xdw.WriteAttributeString("Publisher", package.Publisher);
                                if (package.ProcessorArchitecture != "" && package.PackageType != PackageType.MSIXBUNDLE)
                                {
                                    xdw.WriteAttributeString("ProcessorArchitecture", package.ProcessorArchitecture.ToString());
                                }
                                xdw.WriteAttributeString("Name", package.Name);
                                //packageDCS.WriteEndObject(xdw);
                                xdw.WriteEndElement();
                            }
                            else if (relatedPackages[i].PackageType == PackageType.MSIXBUNDLE)
                            {
                                Bundle bundle = new Bundle(
                                    relatedPackages[i].FilePath,
                                    relatedPackages[i].Version,
                                    relatedPackages[i].Publisher,
                                    relatedPackages[i].Name,
                                    relatedPackages[i].PackageType
                                    );

                                //DataContractSerializer bundleDCS = new DataContractSerializer(typeof(Bundle));
                                //bundleDCS.WriteStartObject(xdw, bundle);
                                xdw.WriteStartElement("Bundle");
                                xdw.WriteAttributeString("Version", bundle.Version);
                                xdw.WriteAttributeString("Uri", bundle.FilePath);
                                xdw.WriteAttributeString("Publisher", bundle.Publisher);
                                xdw.WriteAttributeString("Name", bundle.Name);
                                //bundleDCS.WriteEndObject(xdw);
                                xdw.WriteEndElement();
                            }
                        }
                        //relatedPackageDCS.WriteEndObject(xdw);
                        xdw.WriteEndElement();
                    }


                    //Dependency Content

                    ObservableCollection <Dependency> dependencies = App.Dependencies;
                    //DataContractSerializer dependencyDCS = new DataContractSerializer(typeof(Dependency));
                    if (dependencies.Count > 0 && App.IsDependencies)
                    {
                        //dependencyDCS.WriteStartObject(xdw, dependencies[0]);
                        xdw.WriteStartElement("Dependencies");
                        for (int i = 0; i < dependencies.Count; i++)
                        {
                            //Write package or bundle element
                            if (dependencies[i].PackageType == PackageType.MSIX)
                            {
                                Package package = new Package(
                                    dependencies[i].FilePath,
                                    dependencies[i].Version,
                                    dependencies[i].Publisher,
                                    dependencies[i].Name,
                                    dependencies[i].PackageType,
                                    dependencies[i].ProcessorArchitecture
                                    );

                                //DataContractSerializer packageDCS = new DataContractSerializer(typeof(Package));
                                //packageDCS.WriteStartObject(xdw, package);
                                xdw.WriteStartElement("Package");
                                xdw.WriteAttributeString("Version", package.Version);
                                xdw.WriteAttributeString("Uri", package.FilePath);
                                xdw.WriteAttributeString("Publisher", package.Publisher);
                                if (package.ProcessorArchitecture != "" && package.PackageType != PackageType.MSIXBUNDLE)
                                {
                                    xdw.WriteAttributeString("ProcessorArchitecture", package.ProcessorArchitecture.ToString());
                                }
                                xdw.WriteAttributeString("Name", package.Name);
                                //packageDCS.WriteEndObject(xdw);
                                xdw.WriteEndElement();
                            }
                            else if (dependencies[i].PackageType == PackageType.MSIXBUNDLE)
                            {
                                Bundle bundle = new Bundle(
                                    dependencies[i].FilePath,
                                    dependencies[i].Version,
                                    dependencies[i].Publisher,
                                    dependencies[i].Name,
                                    dependencies[i].PackageType
                                    );

                                //DataContractSerializer bundleDCS = new DataContractSerializer(typeof(Bundle));
                                //bundleDCS.WriteStartObject(xdw, bundle);
                                xdw.WriteStartElement("Bundle");
                                xdw.WriteAttributeString("Version", bundle.Version);
                                xdw.WriteAttributeString("Uri", bundle.FilePath);
                                xdw.WriteAttributeString("Publisher", bundle.Publisher);
                                xdw.WriteAttributeString("Name", bundle.Name);
                                //bundleDCS.WriteEndObject(xdw);
                                xdw.WriteEndElement();
                            }
                        }
                        //dependencyDCS.WriteEndObject(xdw);
                        xdw.WriteEndElement();
                    }


                    //Update Settings
                    UpdateSettings updateSettings = new UpdateSettings();

                    //OnLaunch
                    OnLaunch onLaunch = new OnLaunch(App.IsCheckUpdates, App.HoursBetweenUpdates, App.IsShowPrompt, App.IsBlockUpdate);

                    //ForceUpdateFromAnyVersion
                    ForceUpdateFromAnyVersion forceUpdate = new ForceUpdateFromAnyVersion(App.IsForceUpdate);

                    //AutomaticBackgroundTask
                    AutomaticBackgroundTask automaticBackgroundTask = new AutomaticBackgroundTask(App.IsAutoUpdate);

                    if (onLaunch.IsCheckUpdates)
                    {
                        //DataContractSerializer updateSettingsDCS = new DataContractSerializer(typeof(UpdateSettings));
                        //updateSettingsDCS.WriteStartObject(xdw, updateSettings);
                        xdw.WriteStartElement("UpdateSettings");

                        //DataContractSerializer onLaunchDCS = new DataContractSerializer(typeof(OnLaunch));
                        //onLaunchDCS.WriteStartObject(xdw, onLaunch);
                        xdw.WriteStartElement("OnLaunch");

                        //HoursBetweenUpdate checks is only available AFTER 1709
                        if (!App.AppInstallerFileSchemaNamespace.Equals("http://schemas.microsoft.com/appx/appinstaller/2017"))
                        {
                            xdw.WriteAttributeString("HoursBetweenUpdateChecks", onLaunch.HoursBetweenUpdateChecks.ToString());
                        }

                        if (onLaunch.IsShowPrompt)
                        {
                            xdw.WriteAttributeString("ShowPrompt", onLaunch.IsShowPrompt.ToString().ToLower());
                        }
                        if (onLaunch.IsBlockUpdate)
                        {
                            xdw.WriteAttributeString("UpdateBlocksActivation", onLaunch.IsBlockUpdate.ToString().ToLower());
                        }
                        //onLaunchDCS.WriteEndObject(xdw);
                        xdw.WriteEndElement();

                        if (forceUpdate.IsForceUpdate)
                        {
                            //DataContractSerializer forceUpdateDCS = new DataContractSerializer(typeof(ForceUpdateFromAnyVersion));
                            //forceUpdateDCS.WriteStartObject(xdw, forceUpdate);
                            xdw.WriteStartElement("ForceUpdateFromAnyVersion");
                            xdw.WriteString(forceUpdate.IsForceUpdate.ToString().ToLower());
                            //forceUpdateDCS.WriteEndObject(xdw);
                            xdw.WriteEndElement();
                        }

                        if (automaticBackgroundTask.IsAutoUpdate)
                        {
                            //DataContractSerializer autoUpdateDCS = new DataContractSerializer(typeof(AutomaticBackgroundTask));
                            //autoUpdateDCS.WriteStartObject(xdw, automaticBackgroundTask);
                            xdw.WriteStartElement("AutomaticBackgroundTask");
                            //autoUpdateDCS.WriteEndObject(xdw);
                            xdw.WriteEndElement();
                        }

                        //updateSettingsDCS.WriteEndObject(xdw);
                        xdw.WriteEndElement();
                    }


                    //xdw.WriteEndElement();
                    //appInstallerDCS.WriteEndObject(xdw);
                    xdw.Dispose();
                });
                t.Wait();
            }
            catch (Exception exc)
            {
                Debug.WriteLine("The serialization operation failed: {0} StackTrace: {1}",
                                exc.Message, exc.StackTrace);
            }

            //Display dialog
            _displaySuccessDialog(file);
        }
Example #9
0
 public void Launch(Vector3 direction)
 {
     _direction = direction;
     OnLaunch?.Invoke(_direction);
 }
Example #10
0
        /***************************************************************************
        *
        * Private Methods
        *
        ***************************************************************************/

        private void Generate_File_Button_Click(object sender, RoutedEventArgs e)
        {
            //Check that all required fields have been filled
            if (!_validateInput())
            {
                return;
            }

            try
            {
                var t = Task.Run(() =>
                {
                    //Create file
                    FileStream writer = new FileStream(ApplicationData.Current.LocalFolder.Path + "//Your_AppInstaller_File_Name.xml", FileMode.Create);

                    AppInstaller appInstaller = new AppInstaller(App.AppInstallerFilePath, App.AppInstallerVersionNumber);

                    //Initialize DCS of type AppInstallerModel
                    XmlDictionaryWriter xdw = XmlDictionaryWriter.CreateTextWriter(writer, Encoding.UTF8);

                    DataContractSerializer appInstallerDCS = new DataContractSerializer(typeof(AppInstaller));

                    //AppInstaller Content
                    appInstallerDCS.WriteStartObject(xdw, appInstaller);
                    xdw.WriteAttributeString("xmlns", "http://schemas.microsoft.com/appx/appinstaller/2017");
                    xdw.WriteAttributeString("Uri", App.AppInstallerFilePath);
                    xdw.WriteAttributeString("Version", App.AppInstallerVersionNumber);

                    //Main Package Content
                    if (App.MainPackage.PackageType == PackageType.MSIX)
                    {
                        DataContractSerializer mainPackageDCS = new DataContractSerializer(typeof(MainPackage));
                        MainPackage mainPackage = new MainPackage(App.MainPackage.FilePath, App.MainPackage.Version, App.MainPackage.Publisher, App.MainPackage.Name, App.MainPackage.PackageType, App.MainPackage.ProcessorArchitecture, App.MainPackage.ResourceId);
                        mainPackageDCS.WriteStartObject(xdw, mainPackage);
                        xdw.WriteAttributeString("Uri", mainPackage.FilePath);
                        xdw.WriteAttributeString("Version", mainPackage.Version);
                        xdw.WriteAttributeString("Publisher", mainPackage.Publisher);
                        if (mainPackage.ResourceId != "")
                        {
                            xdw.WriteAttributeString("ResourceId", mainPackage.ResourceId);
                        }
                        if (mainPackage.ProcessorArchitecture != ProcessorArchitecture.none && mainPackage.PackageType != PackageType.msixbundle)
                        {
                            xdw.WriteAttributeString("ProcessorArchitecture", mainPackage.ProcessorArchitecture.ToString());
                        }
                        xdw.WriteAttributeString("Name", mainPackage.Name);
                        mainPackageDCS.WriteEndObject(xdw);
                    }
                    else if (App.MainPackage.PackageType == PackageType.msixbundle)
                    {
                        DataContractSerializer mainBundleDCS = new DataContractSerializer(typeof(MainBundle));
                        MainBundle mainBundle = new MainBundle(App.MainPackage.FilePath, App.MainPackage.Version, App.MainPackage.Publisher, App.MainPackage.Name);
                        mainBundleDCS.WriteStartObject(xdw, mainBundle);
                        xdw.WriteAttributeString("Uri", mainBundle.FilePath);
                        xdw.WriteAttributeString("Version", mainBundle.Version);
                        xdw.WriteAttributeString("Publisher", mainBundle.Publisher);
                        xdw.WriteAttributeString("Name", mainBundle.Name);
                        mainBundleDCS.WriteEndObject(xdw);
                    }

                    //Optional Packages Content
                    ObservableCollection <OptionalPackage> optionalPackages = App.OptionalPackages;
                    DataContractSerializer optionalPackageDCS = new DataContractSerializer(typeof(OptionalPackage));
                    if (optionalPackages.Count > 0 && App.IsOptionalPackages)
                    {
                        optionalPackageDCS.WriteStartObject(xdw, optionalPackages[0]);
                        for (int i = 0; i < optionalPackages.Count; i++)
                        {
                            //Write package or bundle element
                            if (optionalPackages[i].PackageType == PackageType.MSIX)
                            {
                                Package package = new Package(
                                    optionalPackages[i].FilePath,
                                    optionalPackages[i].Version,
                                    optionalPackages[i].Publisher,
                                    optionalPackages[i].Name,
                                    optionalPackages[i].PackageType,
                                    optionalPackages[i].ProcessorArchitecture
                                    );

                                DataContractSerializer packageDCS = new DataContractSerializer(typeof(Package));
                                packageDCS.WriteStartObject(xdw, package);
                                xdw.WriteAttributeString("Version", package.Version);
                                xdw.WriteAttributeString("Uri", package.FilePath);
                                xdw.WriteAttributeString("Publisher", package.Publisher);
                                if (package.ProcessorArchitecture != ProcessorArchitecture.none && package.PackageType != PackageType.msixbundle)
                                {
                                    xdw.WriteAttributeString("ProcessorArchitecture", package.ProcessorArchitecture.ToString());
                                }
                                xdw.WriteAttributeString("Name", package.Name);
                                packageDCS.WriteEndObject(xdw);
                            }
                            else if (optionalPackages[i].PackageType == PackageType.msixbundle)
                            {
                                Bundle bundle = new Bundle(
                                    optionalPackages[i].FilePath,
                                    optionalPackages[i].Version,
                                    optionalPackages[i].Publisher,
                                    optionalPackages[i].Name,
                                    optionalPackages[i].PackageType
                                    );

                                DataContractSerializer bundleDCS = new DataContractSerializer(typeof(Bundle));
                                bundleDCS.WriteStartObject(xdw, bundle);
                                xdw.WriteAttributeString("Version", bundle.Version);
                                xdw.WriteAttributeString("Uri", bundle.FilePath);
                                xdw.WriteAttributeString("Publisher", bundle.Publisher);
                                xdw.WriteAttributeString("Name", bundle.Name);
                                bundleDCS.WriteEndObject(xdw);
                            }
                        }
                        optionalPackageDCS.WriteEndObject(xdw);
                    }


                    //Modification Packages Content
                    ObservableCollection <ModificationPackage> modificationPackages = App.ModificationPackages;
                    DataContractSerializer modificationPackageDCS = new DataContractSerializer(typeof(ModificationPackage));
                    if (modificationPackages.Count > 0 && App.IsModificationPackages)
                    {
                        modificationPackageDCS.WriteStartObject(xdw, modificationPackages[0]);
                        for (int i = 0; i < modificationPackages.Count; i++)
                        {
                            //Write package or bundle element
                            if (modificationPackages[i].PackageType == PackageType.MSIX)
                            {
                                Package package = new Package(
                                    modificationPackages[i].FilePath,
                                    modificationPackages[i].Version,
                                    modificationPackages[i].Publisher,
                                    modificationPackages[i].Name,
                                    modificationPackages[i].PackageType,
                                    modificationPackages[i].ProcessorArchitecture
                                    );

                                DataContractSerializer packageDCS = new DataContractSerializer(typeof(Package));
                                packageDCS.WriteStartObject(xdw, package);
                                xdw.WriteAttributeString("Version", package.Version);
                                xdw.WriteAttributeString("Uri", package.FilePath);
                                xdw.WriteAttributeString("Publisher", package.Publisher);
                                if (package.ProcessorArchitecture != ProcessorArchitecture.none && package.PackageType != PackageType.msixbundle)
                                {
                                    xdw.WriteAttributeString("ProcessorArchitecture", package.ProcessorArchitecture.ToString());
                                }
                                xdw.WriteAttributeString("Name", package.Name);
                                packageDCS.WriteEndObject(xdw);
                            }
                            else if (modificationPackages[i].PackageType == PackageType.msixbundle)
                            {
                                Bundle bundle = new Bundle(
                                    modificationPackages[i].FilePath,
                                    modificationPackages[i].Version,
                                    modificationPackages[i].Publisher,
                                    modificationPackages[i].Name,
                                    modificationPackages[i].PackageType
                                    );

                                DataContractSerializer bundleDCS = new DataContractSerializer(typeof(Bundle));
                                bundleDCS.WriteStartObject(xdw, bundle);
                                xdw.WriteAttributeString("Version", bundle.Version);
                                xdw.WriteAttributeString("Uri", bundle.FilePath);
                                xdw.WriteAttributeString("Publisher", bundle.Publisher);
                                xdw.WriteAttributeString("Name", bundle.Name);
                                bundleDCS.WriteEndObject(xdw);
                            }
                        }
                        modificationPackageDCS.WriteEndObject(xdw);
                    }

                    //Related Packages Content
                    ObservableCollection <RelatedPackage> relatedPackages = App.RelatedPackages;
                    DataContractSerializer relatedPackageDCS = new DataContractSerializer(typeof(RelatedPackage));
                    if (relatedPackages.Count > 0 && App.IsRelatedPackages)
                    {
                        relatedPackageDCS.WriteStartObject(xdw, relatedPackages[0]);
                        for (int i = 0; i < relatedPackages.Count; i++)
                        {
                            //Write package or bundle element
                            if (relatedPackages[i].PackageType == PackageType.MSIX)
                            {
                                Package package = new Package(
                                    relatedPackages[i].FilePath,
                                    relatedPackages[i].Version,
                                    relatedPackages[i].Publisher,
                                    relatedPackages[i].Name,
                                    relatedPackages[i].PackageType,
                                    relatedPackages[i].ProcessorArchitecture
                                    );

                                DataContractSerializer packageDCS = new DataContractSerializer(typeof(Package));
                                packageDCS.WriteStartObject(xdw, package);
                                xdw.WriteAttributeString("Version", package.Version);
                                xdw.WriteAttributeString("Uri", package.FilePath);
                                xdw.WriteAttributeString("Publisher", package.Publisher);
                                if (package.ProcessorArchitecture != ProcessorArchitecture.none && package.PackageType != PackageType.msixbundle)
                                {
                                    xdw.WriteAttributeString("ProcessorArchitecture", package.ProcessorArchitecture.ToString());
                                }
                                xdw.WriteAttributeString("Name", package.Name);
                                packageDCS.WriteEndObject(xdw);
                            }
                            else if (relatedPackages[i].PackageType == PackageType.msixbundle)
                            {
                                Bundle bundle = new Bundle(
                                    relatedPackages[i].FilePath,
                                    relatedPackages[i].Version,
                                    relatedPackages[i].Publisher,
                                    relatedPackages[i].Name,
                                    relatedPackages[i].PackageType
                                    );

                                DataContractSerializer bundleDCS = new DataContractSerializer(typeof(Bundle));
                                bundleDCS.WriteStartObject(xdw, bundle);
                                xdw.WriteAttributeString("Version", bundle.Version);
                                xdw.WriteAttributeString("Uri", bundle.FilePath);
                                xdw.WriteAttributeString("Publisher", bundle.Publisher);
                                xdw.WriteAttributeString("Name", bundle.Name);
                                bundleDCS.WriteEndObject(xdw);
                            }
                        }
                        relatedPackageDCS.WriteEndObject(xdw);
                    }


                    //Dependency Content

                    ObservableCollection <Dependency> dependencies = App.Dependencies;
                    DataContractSerializer dependencyDCS           = new DataContractSerializer(typeof(Dependency));
                    if (dependencies.Count > 0 && App.IsDependencies)
                    {
                        dependencyDCS.WriteStartObject(xdw, dependencies[0]);
                        for (int i = 0; i < dependencies.Count; i++)
                        {
                            //Write package or bundle element
                            if (dependencies[i].PackageType == PackageType.MSIX)
                            {
                                Package package = new Package(
                                    dependencies[i].FilePath,
                                    dependencies[i].Version,
                                    dependencies[i].Publisher,
                                    dependencies[i].Name,
                                    dependencies[i].PackageType,
                                    dependencies[i].ProcessorArchitecture
                                    );

                                DataContractSerializer packageDCS = new DataContractSerializer(typeof(Package));
                                packageDCS.WriteStartObject(xdw, package);
                                xdw.WriteAttributeString("Version", package.Version);
                                xdw.WriteAttributeString("Uri", package.FilePath);
                                xdw.WriteAttributeString("Publisher", package.Publisher);
                                if (package.ProcessorArchitecture != ProcessorArchitecture.none && package.PackageType != PackageType.msixbundle)
                                {
                                    xdw.WriteAttributeString("ProcessorArchitecture", package.ProcessorArchitecture.ToString());
                                }
                                xdw.WriteAttributeString("Name", package.Name);
                                packageDCS.WriteEndObject(xdw);
                            }
                            else if (dependencies[i].PackageType == PackageType.msixbundle)
                            {
                                Bundle bundle = new Bundle(
                                    dependencies[i].FilePath,
                                    dependencies[i].Version,
                                    dependencies[i].Publisher,
                                    dependencies[i].Name,
                                    dependencies[i].PackageType
                                    );

                                DataContractSerializer bundleDCS = new DataContractSerializer(typeof(Bundle));
                                bundleDCS.WriteStartObject(xdw, bundle);
                                xdw.WriteAttributeString("Version", bundle.Version);
                                xdw.WriteAttributeString("Uri", bundle.FilePath);
                                xdw.WriteAttributeString("Publisher", bundle.Publisher);
                                xdw.WriteAttributeString("Name", bundle.Name);
                                bundleDCS.WriteEndObject(xdw);
                            }
                        }
                        dependencyDCS.WriteEndObject(xdw);
                    }


                    //Update Settings
                    UpdateSettings updateSettings = new UpdateSettings();

                    //OnLaunch
                    OnLaunch onLaunch = new OnLaunch(App.IsCheckUpdates, App.HoursBetweenUpdates);

                    if (onLaunch.IsCheckUpdates)
                    {
                        DataContractSerializer updateSettingsDCS = new DataContractSerializer(typeof(UpdateSettings));
                        updateSettingsDCS.WriteStartObject(xdw, updateSettings);

                        DataContractSerializer onLaunchDCS = new DataContractSerializer(typeof(OnLaunch));
                        onLaunchDCS.WriteStartObject(xdw, onLaunch);
                        xdw.WriteAttributeString("HoursBetweenUpdateChecks", onLaunch.HoursBetweenUpdateChecks.ToString());
                        onLaunchDCS.WriteEndObject(xdw);
                        updateSettingsDCS.WriteEndObject(xdw);
                    }


                    appInstallerDCS.WriteEndObject(xdw);
                    xdw.Dispose();
                });
                t.Wait();
            }
            catch (Exception exc)
            {
                Debug.WriteLine("The serialization operation failed: {0} StackTrace: {1}",
                                exc.Message, exc.StackTrace);
            }

            //Display dialog
            _displaySuccessDialog();
        }