/// <summary> /// Installs the mod and activates it. /// </summary> protected override bool DoScript() { foreach (var strSettingsFile in Program.GameMode.SettingsFiles.Values) { TransactionalFileManager.Snapshot(strSettingsFile); } foreach (var strAdditionalFile in Program.GameMode.AdditionalPaths.Values) { if (File.Exists(strAdditionalFile)) { TransactionalFileManager.Snapshot(strAdditionalFile); } } TransactionalFileManager.Snapshot(InstallLog.Current.InstallLogPath); try { MergeModule = new InstallLogMergeModule(); if (Fomod.HasInstallScript) { var fscInstallScript = Fomod.GetInstallScript(); switch (fscInstallScript.Type) { case FomodScriptType.CSharp: Fomod.IsActive = RunCustomInstallScript(); break; case FomodScriptType.XMLConfig: Fomod.IsActive = RunXmlInstallScript(); break; } } else { Fomod.IsActive = RunBasicInstallScript("Installing Fomod"); } if (Fomod.IsActive) { InstallLog.Current.Merge(Fomod, MergeModule); Script.CommitActivePlugins(); } } catch (Exception e) { Fomod.IsActive = false; throw e; } if (!Fomod.IsActive) { return(false); } return(true); }
/// <summary> /// Performs an in-place upgrade of the <see cref="fomod" />. /// </summary> protected override bool DoScript() { foreach (var strSettingsFile in Program.GameMode.SettingsFiles.Values) { TransactionalFileManager.Snapshot(strSettingsFile); } foreach (var strAdditionalFile in Program.GameMode.AdditionalPaths.Values) { if (File.Exists(strAdditionalFile)) { TransactionalFileManager.Snapshot(strAdditionalFile); } } TransactionalFileManager.Snapshot(InstallLog.Current.InstallLogPath); var booUpgraded = false; try { MergeModule = new InstallLogMergeModule(); if (Fomod.HasInstallScript) { var fscInstallScript = Fomod.GetInstallScript(); switch (fscInstallScript.Type) { case FomodScriptType.CSharp: booUpgraded = RunCustomInstallScript(); break; case FomodScriptType.XMLConfig: booUpgraded = RunXmlInstallScript(); break; } } else { booUpgraded = RunBasicInstallScript(ProgressMessage); } if (booUpgraded) { using (m_bwdProgress = new BackgroundWorkerProgressDialog(ReconcileDifferences)) { m_bwdProgress.OverallMessage = "Finalizing Upgrade"; m_bwdProgress.ItemProgressStep = 1; m_bwdProgress.OverallProgressStep = 1; if (m_bwdProgress.ShowDialog() == DialogResult.Cancel) { return(false); } } var strOldBaseName = Fomod.BaseName; ((UpgradeFomod)Fomod).SetBaseName(((UpgradeFomod)Fomod).OriginalBaseName); InstallLog.Current.MergeUpgrade(Fomod, strOldBaseName, MergeModule); ((UpgradeFomod)Fomod).SetBaseName(strOldBaseName); Script.CommitActivePlugins(); } } catch (Exception e) { throw e; } m_fomodOriginalMod.IsActive = DetermineFomodActiveStatus(booUpgraded); return(booUpgraded); }
/// <summary> /// Runs the custom install script included in the fomod. /// </summary> /// <returns> /// <lang langref="true" /> if the installation was successful; /// <lang langref="false" /> otherwise. /// </returns> protected bool RunCustomInstallScript() { var strScript = Fomod.GetInstallScript().Text; return(ScriptCompiler.Execute(strScript, this)); }