Compare commits

..
Author SHA1 Message Date
Tannin 3ba23e0a80 Merge with branch1.2 2015-01-03 15:58:52 +01:00
Tannin 66a91265c8 - bugfix: after last commit the NCC installer wasn't able to discover files in the mod being installed 2014-12-14 16:23:40 +01:00
Tannin 89500bc02e - NCC installer can now discover files in other mods (thanks Reunion!) and knows the script extender version 2014-12-13 16:47:11 +01:00
TheBloke e58be3d748 Updated NCC deploy method, in BossDummy.pro -
Replaced publish.bat with a new Powershell script, publish.ps1
 This has the advantage of allowing the setting of "stop on any error"
  (using $ErrorActionPreference = "Stop")
  Therefore, if any file is not created by the (separate) NCC process, the
   MO build will stop and you will know immediately that not all files are OK.
 Updated the rules in publish.ps1 to remove references to the (old) .Net
  BossDummy files, and also NexusClientCLI.exe.manifest which is not created.
 Usage of publish.ps1 -
   publish.ps1 <-debug|-release>
 Passing -debug or -release sets the appropriate output directory
2014-07-07 20:43:41 +01:00
Tannin 8bf91045b5 - NCC will now report an error if a script tries to extract a non-existent file instead of creating an empty output file
- ncc installer plugin now uses a more reliable method to force the installer window to the foreground
- missing version on TESV.exe will no longer be reported as an error
- bugfix: loot client didn't read list of active mods
- bugfix: invalid free call in error reporting function
2014-05-15 19:11:19 +02:00
Tannin f342dae9ba - main window now has a small view displaying log messages
- mod list will now be highlighted when grouping is active is active
- download tooltip now supports bbcode markup in the description
- bbcode translator will now translate some named colors
- algorithm for detection of mod order problems is now more sophisticated
- exposed more functionality to python plugins
- updated to qt 4.8.6 dlls
- bugfix: plugin list wasn't
- bugfix: state changes in mod list wasn't always reported
- bugfix: loot client will now create necessary directory
- bugfix: NCC sometimes used wrong source path for extracting
- bugfix: removed noisy debug message
2014-05-04 14:50:01 +02:00
Tannin afeffdc1e9 - download tooltip now also includes the file description
- will now display an error message when the ini file can't be updated (in addition to what windows says)
2014-05-01 10:03:40 +02:00
Tannin 65a14e2b78 - improved NCC compatibility
- crude support for multi-volume archives
- updated imageformats plugins
- nxmhandler now puts the exe to the top of the list when registering an MO instance, even if it is already in the list
- bugfix: WritePrivateProfileString hook attempted to access lpKeyName even when it is null
2014-03-26 15:35:59 +01:00
Tannin 96ac387aae - "CreateDirectory" will no longer create directories in original data directory
- bain installer will now be less picky about the archives supported
- updated NCC to be compatible with more recent NMM code base
- hack in NCC to allow it to install arbitrary sized files even in 32-bit builds
- updated the python27.dll to one that links to msvcr100.dll to get rid of the dependency of msvcr90.dll
- bugfix: dll search order wasn't set to allow plugins to load the correct qt dlls
2014-03-13 19:00:32 +01:00
Tannin 8e43d4f285 - bugfix: esp parsing could crash for broken/unrecognized esps
- bugfix: esp parser didn't handle oblivion esps correctly
2013-09-23 22:39:58 +02:00
19 changed files with 6137 additions and 667 deletions
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
+14
View File
@@ -0,0 +1,14 @@
Copyright 2004-2014 Castle Project - http://www.castleproject.org/
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+90
View File
@@ -0,0 +1,90 @@
/* This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
using System;
using System.IO;
using System.Linq;
using System.Text;
using Nexus.Client.ModManagement.Scripting;
using System.Collections.Generic;
namespace Nexus.Client.CLI
{
/// <summary>
/// Provides access to some files in previously installed mods' installation path.
/// </summary>
class DummyDataFileUtil : IDataFileUtil
{
private string m_gamePath;
private DataFileUtil m_dataFileUtil;
protected List<string> SearchPaths { get; set; }
// To be used internally by DummyDataFileUtilFactory
// Use DummyDataFileUtilFactory.CreateDummyDataFileUtil() to instantiate
internal DummyDataFileUtil(string installationPath, string gamePath, List<string> installationPaths)
{
m_gamePath = gamePath;
m_dataFileUtil = new DataFileUtil(installationPath);
SearchPaths = installationPaths;
}
public void AssertFilePathIsSafe(string p_strPath)
{
m_dataFileUtil.AssertFilePathIsSafe(p_strPath);
}
public bool DataFileExists(string p_strPath)
{
foreach (string path in SearchPaths) {
if (File.Exists(Path.Combine(path, p_strPath)))
{
return true;
}
}
return false;
}
public string[] GetExistingDataFileList(string p_strPath, string p_strPattern, bool p_booAllFolders)
{
// Not implemented
// Will implement if needed
return new string[] {};
}
public byte[] GetExistingDataFile(string p_strPath)
{
AssertFilePathIsSafe(p_strPath);
if (p_strPath.StartsWith("data", StringComparison.OrdinalIgnoreCase))
{
foreach (string path in SearchPaths)
{
string dataPath = Path.Combine(path, p_strPath.Substring(5));
Console.WriteLine("test: " + dataPath + " - " + File.Exists(dataPath));
if (File.Exists(dataPath))
{
return File.ReadAllBytes(dataPath);
}
}
}
else
{
string dataPath = Path.Combine(m_gamePath, p_strPath);
if (File.Exists(dataPath))
{
return File.ReadAllBytes(dataPath);
}
}
throw new FileNotFoundException();
}
}
}
@@ -0,0 +1,76 @@
/* This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Nexus.Client.CLI
{
class DummyDataFileUtilFactory
{
private string m_installationPath;
private string m_gamePath;
private int m_copiedFiles = 0;
private List<string> m_searchPaths = new List<string>();
/// <summary>
/// Creates an instance of DummyDataFileUtilFactory.
/// </summary>
/// <param name="installationPath">The path where the current mod is being installed</param>
/// <param name="modlistFile">The path to the modlist.txt file</param>
/// <param name="modsPath">The path to the mods directory where previously installed mods are located</param>
public DummyDataFileUtilFactory(string installationPath, string modlistFile, string modsPath, string gamePath, List<string> additionalSearchPaths)
{
m_installationPath = installationPath;
m_gamePath = gamePath;
m_searchPaths = additionalSearchPaths;
m_searchPaths.Add(Path.Combine(m_installationPath, "data"));
StreamReader reader = new StreamReader(modlistFile);
string line;
while ((line = reader.ReadLine()) != null)
{
// A mod name per line
// Handle only activated mods (ignore inactive and unmanaged)
if (line[0] == '+')
{
string modName = line.Substring(1);
string modPath = Path.Combine(modsPath, modName);
// Ignore mod when it is being reinstalled
// That folder has no relevant data files anyway
// This happens when an activated mod is being reinstalled
if (modPath.Equals(m_installationPath, StringComparison.InvariantCultureIgnoreCase))
{
Logger.Debug("Ignoring mod {0} that appears to be the one that is being installed", modName);
}
else
{
m_searchPaths.Add(modPath);
}
}
}
}
/// <summary>
/// Create a new instance DummyDataFileUtil that will use the dummy data folder created by this factory.
/// </summary>
/// <returns>New instance of DummyDataFileUtil</returns>
public DummyDataFileUtil CreateDummyDataFileUtil()
{
return new DummyDataFileUtil(m_installationPath, m_gamePath, m_searchPaths);
}
}
}
+1 -2
View File
@@ -32,14 +32,13 @@ namespace Nexus.Client.PluginManagement
{
StreamReader reader = new StreamReader(pluginsFile);
string installationPath = gameMode.GetModFormatAdjustedPath(mod.Format, null);
string installationPath = Path.Combine(gameMode.GameModeEnvironmentInfo.InstallationPath, gameMode.GetModFormatAdjustedPath(mod.Format, null));
string line;
while ((line = reader.ReadLine()) != null)
{
if (line[0] != '#')
{
Console.WriteLine(Path.Combine(installationPath, line.ToLower()));
m_Plugins.Add(new Plugin(Path.Combine(installationPath, line.ToLower()), line, null));
}
}
+37
View File
@@ -0,0 +1,37 @@
using Castle.DynamicProxy;
using Nexus.Client.Games;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Nexus.Client.CLI
{
[Serializable]
class GameModeInterceptor : IInterceptor
{
private List<string> m_AdditionalWritablePaths;
private Version m_ExtenderVersion;
public GameModeInterceptor(List<string> additionalWritablePaths, Version extenderVersion)
{
m_AdditionalWritablePaths = additionalWritablePaths;
m_ExtenderVersion = extenderVersion;
}
public void Intercept(IInvocation invocation)
{
invocation.Proceed();
if (invocation.Method.Name == "get_WritablePaths")
{
IEnumerable<string> temp = (IEnumerable<string>)invocation.ReturnValue;
invocation.ReturnValue = temp.Concat(m_AdditionalWritablePaths);
}
else if (invocation.Method.Name == "get_ScriptExtenderVersion")
{
if (invocation.ReturnValue == null)
invocation.ReturnValue = m_ExtenderVersion;
}
}
}
}
+135
View File
@@ -0,0 +1,135 @@
/* This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Reflection;
namespace Nexus.Client.CLI
{
class Logger
{
public enum Level
{
None = 0,
Error = 1,
Warning = 2,
Info = 3,
Debug = 4,
Fine = 5,
// Place finer levels here if needed
All = 9
}
private const string s_logfileName = "NexusClientCLI.log";
private static string s_logfilePath = null;
private static Level s_maxVerbosity = Level.None;
public static void SetVerbosity(Level verbostity)
{
s_maxVerbosity = verbostity;
}
public static void SetLogDestination(string path)
{
s_logfilePath = Path.Combine(path, s_logfileName);
}
public static void Error(String msg)
{
if (IsLevelLoggable(Level.Error))
WriteMessage(Level.Error, msg);
}
public static void Error(String fmt, Object arg)
{
if (IsLevelLoggable(Level.Error))
WriteMessage(Level.Error, String.Format(fmt, arg));
}
public static void Warning(String msg)
{
if (IsLevelLoggable(Level.Warning))
WriteMessage(Level.Warning, msg);
}
public static void Warning(String fmt, Object arg)
{
if (IsLevelLoggable(Level.Warning))
WriteMessage(Level.Warning, String.Format(fmt, arg));
}
public static void Info(String msg)
{
if (IsLevelLoggable(Level.Info))
WriteMessage(Level.Info, msg);
}
public static void Info(String fmt, Object arg)
{
if (IsLevelLoggable(Level.Info))
WriteMessage(Level.Info, String.Format(fmt, arg));
}
public static void Debug(String msg)
{
if (IsLevelLoggable(Level.Debug))
WriteMessage(Level.Debug, msg);
}
public static void Debug(String fmt, Object arg)
{
if (IsLevelLoggable(Level.Debug))
WriteMessage(Level.Debug, String.Format(fmt, arg));
}
public static void Fine(String msg)
{
if (IsLevelLoggable(Level.Fine))
WriteMessage(Level.Fine, msg);
}
public static void Fine(String fmt, Object arg)
{
if (IsLevelLoggable(Level.Fine))
WriteMessage(Level.Fine, String.Format(fmt, arg));
}
public static bool IsLevelLoggable(Level level)
{
return level <= s_maxVerbosity;
}
private static void WriteMessage(Level level, string msg)
{
try
{
string output = string.Format("[{0}] {1}{2}", level, msg, Environment.NewLine);
if (s_logfilePath != null) {
File.AppendAllText(s_logfilePath, output);
}
else
{
Console.WriteLine(output);
}
}
catch (Exception)
{
// Ignore exception
}
}
}
}
@@ -0,0 +1,125 @@
using Nexus.Client.Mods;
//using Nexus.Client.Mods.Formats.FOMod;
//using Nexus.Client.Mods.Formats.OMod;
using Nexus.Client.Util;
using SevenZip;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Reflection;
namespace Extensions
{
public static class Extension
{
public static T GetPrivateField<T>(this object obj, string name)
{
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = obj.GetType();
FieldInfo field = type.GetField(name, flags);
return (T)field.GetValue(obj);
}
public static T GetPrivateProperty<T>(this object obj, string name)
{
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = obj.GetType();
PropertyInfo field = type.GetProperty(name, flags);
return (T)field.GetValue(obj, null);
}
public static T CallPrivateMethod<T>(this object obj, string name, params object[] param)
{
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = obj.GetType();
MethodInfo method = type.GetMethod(name, flags);
return (T)method.Invoke(obj, param);
}
public static void ExtractFileContents(this Archive archive, string p_strPath, Stream p_outStream)
{
string strPath = p_strPath.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
var fileInfo = archive.GetPrivateField<Dictionary<string, ArchiveFileInfo>>("m_dicFileInfo");
if (!fileInfo.ContainsKey(strPath))
throw new FileNotFoundException("The requested file does not exist in the archive.", p_strPath);
ArchiveFileInfo afiFile = fileInfo[strPath];
//check to see if we are on the same thread as the extractor
// if not, then marshall the call to the extractor's thread.
// this needs to be done as the 7zip dll cannot handle calls from other
// threads.
if (archive.GetPrivateProperty<bool>("IsReadonly"))
{
var roExtractor = archive.GetPrivateField<ThreadSafeSevenZipExtractor>("m_szeReadOnlyExtractor");
if (roExtractor == null) {
string tempDir = archive.GetPrivateField<string>("m_strReadOnlyTempDirectory");
using (FileStream inStream = new FileStream(Path.Combine(tempDir, strPath), FileMode.Open, FileAccess.Read)) {
int size = 1024 * 1024;
byte[] buffer = new byte[size];
int read = 0;
while ((read = inStream.Read(buffer, 0, size)) > 0) {
p_outStream.Write(buffer, 0, read);
}
}
}
else
{
roExtractor.ExtractFile(afiFile.Index, p_outStream);
}
}
else
{
using (SevenZipExtractor szeExtractor = archive.CallPrivateMethod<SevenZipExtractor>("GetExtractor", archive.GetPrivateField<string>("m_strPath")))
szeExtractor.ExtractFile(afiFile.Index, p_outStream);
}
}
/// <summary>
/// write the specified file to a stream
/// </summary>
/// <param name="p_strFile">The file to retrieve.</param>
/// <param name="p_outStream">The stream to write to.</param>
/// <exception cref="System.IO.FileNotFoundException">Thrown if the specified file
/// is not in the mod.</exception>
/* public static void ExtractFileTo(this OMod mod, string p_strFile, Stream p_outStream)
{
byte[] data = mod.GetFile(p_strFile);
p_outStream.Write(data, 0, data.Length);
} */
/// <summary>
/// write the specified file to a stream
/// </summary>
/// <param name="p_strFile">The file to retrieve.</param>
/// <param name="p_outStream">The stream to write to.</param>
/// <exception cref="System.IO.FileNotFoundException">Thrown if the specified file
/// is not in the mod.</exception>
public static void ExtractFileTo<T>(this T mod, string p_strFile, Stream p_outStream)
{
string realPath = (string) mod.CallPrivateMethod<string>("GetRealPath", new object[] { p_strFile });
if (!(bool) mod.GetType().GetMethod("ContainsFile").Invoke(mod, new object[] { realPath }))
{
if (Path.GetFileNameWithoutExtension(p_strFile).ToLower() == "screenshot")
{
byte[] data = (byte[])(new ImageConverter().ConvertTo(new Bitmap(1, 1), typeof(byte[])));
p_outStream.Write(data, 0, data.Length);
return;
}
else
throw new FileNotFoundException("File doesn't exist in FOMod", p_strFile);
}
mod.GetPrivateField<Archive>("m_arcFile").ExtractFileContents(realPath, p_outStream);
}
}
class ModExtension
{
}
}
File diff suppressed because it is too large Load Diff
+41 -14
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
@@ -15,6 +15,19 @@
</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
<IsWebBootstrapper>false</IsWebBootstrapper>
<NoWin32Manifest>False</NoWin32Manifest>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<SignAssembly>False</SignAssembly>
<DelaySign>False</DelaySign>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
<PublishUrl>c:\temp\ncc\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
@@ -30,34 +43,29 @@
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
<NoWin32Manifest>False</NoWin32Manifest>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<SignAssembly>False</SignAssembly>
<DelaySign>False</DelaySign>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\bin\Debug\</OutputPath>
<OutputPath>..\nmm\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>true</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\bin\Release\</OutputPath>
<OutputPath>..\nmm\bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<RunCodeAnalysis>true</RunCodeAnalysis>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>5BAE3112B789DE525238306EB42F614854F1C292</ManifestCertificateThumbprint>
@@ -96,6 +104,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>true</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<PlatformTarget>x64</PlatformTarget>
@@ -105,6 +114,9 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'x64' ">
<BaseAddress>4194304</BaseAddress>
@@ -112,7 +124,7 @@
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
@@ -121,6 +133,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>true</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
@@ -130,6 +143,8 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<RunCodeAnalysis>true</RunCodeAnalysis>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<BaseAddress>4194304</BaseAddress>
@@ -137,6 +152,9 @@
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
</PropertyGroup>
<ItemGroup>
<Reference Include="Castle.Core">
<HintPath>.\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="SevenZipSharp">
<HintPath>..\NMM\lib\SevenZipSharp.dll</HintPath>
</Reference>
@@ -151,12 +169,19 @@
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="GameModeInterceptor.cs" />
<Compile Include="GameModeWrapper.cs" />
<Compile Include="DummyDataFileUtilFactory.cs" />
<Compile Include="Logger.cs" />
<Compile Include="DummyDataFileUtil.cs" />
<Compile Include="DummyInstallLog.cs" />
<Compile Include="DummyPluginManager.cs" />
<Compile Include="EnvironmentInfo.cs" />
<Compile Include="ModManagement\IniInstaller.cs" />
<Compile Include="ModManagement\IniMethods.cs" />
<Compile Include="ModManagement\ModExtension.cs" />
<Compile Include="ModManagement\ModFileInstaller.cs" />
<Compile Include="ModManagement\Scripting\IScriptExtensions.cs" />
<Compile Include="Mods\NexusModCacheManager.cs" />
<Compile Include="Pair.cs" />
<Compile Include="Program.cs" />
@@ -170,8 +195,9 @@
<Compile Include="Util\NexusFileUtil.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Properties\app.manifest" />
<None Include="app.config">
<SubType>Designer</SubType>
</None>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -233,6 +259,7 @@
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory />
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>en-US</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<StartArguments>-g Skyrim -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\Default\plugins.txt" -i "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\downloads\SMIM v1-43-8655-1-43.7z" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\SMIM"</StartArguments>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<StartArguments>-g skyrim -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\Default\plugins.txt" -i "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\downloads\SkyUI_4_1-3863-4-1.7z" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\SkyUI"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<StartArguments>-g Skyrim -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\Default\plugins.txt" -i "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\downloads\SMIM v1-43-8655-1-43.7z" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\SMIM"</StartArguments>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<StartArguments>-g Skyrim -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\Default\plugins.txt" -i "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\downloads\SMIM v1-43-8655-1-43.7z" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\SMIM"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<StartArguments>-g Skyrim -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\Default\plugins.txt" -i "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\downloads\SMIM v1-43-8655-1-43.7z" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\SMIM"</StartArguments>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<StartArguments>-g Skyrim -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\Default\plugins.txt" -i "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\downloads\SkyUI_4_1-3863-4-1.7z" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\SkyUI"</StartArguments>
</PropertyGroup>
</Project>
+92 -17
View File
@@ -29,6 +29,8 @@ using Nexus.Client.ModManagement.InstallationLog;
using Nexus.Client.PluginManagement;
using Nexus.Client.Settings;
using Nexus.Client.BackgroundTasks;
using Castle;
using Castle.DynamicProxy;
namespace Nexus.Client.CLI
@@ -71,7 +73,7 @@ namespace Nexus.Client.CLI
/// <param name="p_strModPath">The path to the mod file.</param>
/// <returns>A mod of the appropriate type from the specified file, if the type of hte mod
/// can be determined; <c>null</c> otherwise.</returns>
private static IMod CreateMod(string modPath, IModFormatRegistry formatRegistry)
private static IMod CreateMod(string modPath, IModFormatRegistry formatRegistry, IGameMode gameMode)
{
List<KeyValuePair<FormatConfidence, IModFormat>> lstFormats = new List<KeyValuePair<FormatConfidence, IModFormat>>();
foreach (IModFormat mftFormat in formatRegistry.Formats)
@@ -82,10 +84,11 @@ namespace Nexus.Client.CLI
Console.WriteLine("failed to determine format for " + modPath);
return null;
}
return lstFormats[0].Value.CreateMod(modPath);
return lstFormats[0].Value.CreateMod(modPath, gameMode);
}
static int DoInstall(string game, string filename, string installationPath, string pluginsFile, ref string errorString)
static int DoInstall(string game, string filename, string installationPath, string profilePath, string gamePath,
List<string> additionalSearchPaths, string seVersion, ref string errorString)
{
if (game == null)
@@ -98,9 +101,14 @@ namespace Nexus.Client.CLI
errorString = "no file specified";
return 1;
}
if (pluginsFile == null)
if (profilePath == null)
{
errorString = "no plugin file specified";
errorString = "no profile path specified";
return 1;
}
if (gamePath == null)
{
errorString = "no game path specified";
return 1;
}
try
@@ -147,8 +155,22 @@ namespace Nexus.Client.CLI
environmentInfo.Settings.DelayedSettings["ALL"] = new KeyedSettings<string>();
ViewMessage warning = null;
IGameMode gameMode = gameModeFactory.BuildGameMode(fileUtil, out warning);
// use a proxy so we can intercept accesses to the IGameMode interface. This allows us to make the additional search paths accessible from
// the sandbox and feed in the script extender version even though the nmm lib won't find it.
// This is a massive hack and there is an issue: nmm tries to look up the location of the assembly (for whatever reason) and the proxy
// generated here is in a dynamic assembly and thus doesn't have a location. We will therefore feed the proxy only to the script executor
// and hope for the best
ProxyGenerator generator = new ProxyGenerator();
GameModeInterceptor interceptor = new GameModeInterceptor(additionalSearchPaths, seVersion != null ? new Version(seVersion) : null);
IGameMode gameModeProxied = (IGameMode)generator.CreateClassProxyWithTarget(gameMode.GetType(),
gameMode,
new object[] { environmentInfo, fileUtil },
new IInterceptor[] { interceptor });
IModCacheManager cacheManager = new NexusModCacheManager(environmentInfo.TemporaryPath, gameMode.GameModeEnvironmentInfo.ModDirectory, fileUtil);
IScriptTypeRegistry scriptTypeRegistry = ScriptTypeRegistry.DiscoverScriptTypes(Path.Combine(Path.GetDirectoryName(exeLocation), "ScriptTypes"), gameMode);
@@ -169,8 +191,7 @@ namespace Nexus.Client.CLI
// prevent the installer script from accessing the archive in its original location
string fileNameTemporary = Path.Combine(environmentInfo.TemporaryPath, Path.GetFileName(filename));
File.Copy(filename, fileNameTemporary);
IMod mod = CreateMod(fileNameTemporary, formatRegistry);
IMod mod = CreateMod(fileNameTemporary, formatRegistry, gameMode);
if (mod == null)
{
errorString = "failed to initialize mod";
@@ -181,16 +202,26 @@ namespace Nexus.Client.CLI
if (mod.HasInstallScript)
{
IDataFileUtil dataFileUtility = new DataFileUtil(gameMode.GameModeEnvironmentInfo.InstallationPath);
DummyDataFileUtilFactory dummyFactory = null;
IDataFileUtil dataFileUtility;
Logger.Info("Detected C# script that relies on files in the actual data folder");
string modlistFile = Path.Combine(profilePath, "modlist.txt");
// ASSUMED mods path is the parent directory of the gameMode.InstallationPath
string modsPath = Directory.GetParent(gameMode.InstallationPath).FullName;
// Prepare dummy data directory
dummyFactory = new DummyDataFileUtilFactory(gameMode.GameModeEnvironmentInfo.InstallationPath, modlistFile, modsPath, gamePath, additionalSearchPaths);
dataFileUtility = dummyFactory.CreateDummyDataFileUtil();
TxFileManager fileManager = new TxFileManager();
IInstallLog installLog = new DummyInstallLog();
IIniInstaller iniIniInstaller = new IniInstaller(mod, installLog, fileManager, delegate { return OverwriteResult.No; });
IPluginManager pluginManager = new DummyPluginManager(pluginsFile, gameMode, mod);
IPluginManager pluginManager = new DummyPluginManager(Path.Combine(profilePath, "plugins.txt"), gameMode, mod);
IGameSpecificValueInstaller gameSpecificValueInstaller = gameMode.GetGameSpecificValueInstaller(mod, installLog, fileManager, new NexusFileUtil(environmentInfo), delegate { return OverwriteResult.No; });
IModFileInstaller fileInstaller = new ModFileInstaller(gameMode.GameModeEnvironmentInfo, mod, installLog, pluginManager, dataFileUtility, fileManager, delegate { return OverwriteResult.No; }, false);
InstallerGroup installers = new InstallerGroup(dataFileUtility, fileInstaller, iniIniInstaller, gameSpecificValueInstaller, pluginManager);
IScriptExecutor executor = mod.InstallScript.Type.CreateExecutor(mod, gameMode, environmentInfo, installers, SynchronizationContext.Current);
// read-only transactions are waaaay faster, especially for solid archives (I didn't actually get the reasoning from the comments)
IScriptExecutor executor = mod.InstallScript.Type.CreateExecutor(mod, gameModeProxied, environmentInfo, installers, SynchronizationContext.Current);
// read-only transactions are waaaay faster, especially for solid archives) because the extractor isn't recreated for every extraction (why exactly would it be otherwise?)
mod.BeginReadOnlyTransaction(fileUtil);
// run the script in a second thread and start the main loop in the main thread to ensure we can handle message boxes and the like
ScriptRunner runner = new ScriptRunner(executor, mod.InstallScript);
@@ -201,6 +232,7 @@ namespace Nexus.Client.CLI
iniIniInstaller.FinalizeInstall();
gameSpecificValueInstaller.FinalizeInstall();
mod.EndReadOnlyTransaction();
Application.Exit();
};
@@ -233,7 +265,14 @@ namespace Nexus.Client.CLI
string game = null;
string filename = null;
string installationPath = null;
string pluginsFile = null;
string profilePath = null;
string gamePath = null;
string seVersion = null;
List<string> searchPaths = new List<string>();
// Default log verbosity, see Logger.Level
int loggerVerbosity = 4; // 0 for none, 9 for all
// determine action
for (int i = 0; i < args.Length; ++i)
@@ -242,7 +281,7 @@ namespace Nexus.Client.CLI
{
if (args.Length - i <= 1)
{
Console.WriteLine("invalid number of parameters, expected game name");
Logger.Error("invalid number of parameters, expected game name");
return 1;
}
++i;
@@ -253,11 +292,12 @@ namespace Nexus.Client.CLI
{
if (args.Length - i <= 2)
{
Console.WriteLine("invalid number of parameters, expected filename and installation path");
Logger.Error("invalid number of parameters, expected filename and installation path");
return 1;
}
filename = args[i + 1];
installationPath = args[i + 2];
Logger.SetLogDestination(installationPath);
i += 2;
}
@@ -265,16 +305,51 @@ namespace Nexus.Client.CLI
{
if (args.Length - i <= 1)
{
Console.WriteLine("invalid number of parameters, expected plugins file");
Logger.Error("invalid number of parameters, expected plugins file");
return 1;
}
++i;
pluginsFile = args[i];
profilePath = args[i];
}
if (args[i].ToLower().Equals("/gd") || args[i].ToLower().Equals("-gd"))
{
if (args.Length - i <= 1)
{
Logger.Error("invalid number of parameters, expected path name");
return 1;
}
++i;
gamePath = args[i];
searchPaths.Add(args[i] + "\\data");
}
if (args[i].ToLower().Equals("/d") || args[i].ToLower().Equals("-d"))
{
if (args.Length - i <= 1)
{
Logger.Error("invalid number of parameters, expected path name");
return 1;
}
++i;
searchPaths.Add(args[i]);
}
if (args[i].ToLower().Equals("/se") || args[i].ToLower().Equals("-se"))
{
if (args.Length - i <= 1)
{
Logger.Error("invalid number of parameters, expected path name");
return 1;
}
seVersion = args[++i];
}
}
// Set logger verbosity level
Logger.SetVerbosity((Logger.Level)loggerVerbosity);
string errorString = "";
int result = DoInstall(game, filename, installationPath, pluginsFile, ref errorString);
int result = DoInstall(game, filename, installationPath, profilePath, gamePath, searchPaths, seVersion, ref errorString);
if ((result != 0) && (errorString.Length != 0))
{
MessageBox.Show(errorString, "Installation Failed: " + result, MessageBoxButtons.OK, MessageBoxIcon.Error);
+64 -31
View File
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -204,22 +204,9 @@ namespace Nexus.Client.CLI.Properties {
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n <PerGameModeSettingsOf" +
"KeyedSettingsOfString />\r\n\t\t\t")]
public global::Nexus.Client.Settings.PerGameModeSettings<Nexus.Client.Settings.KeyedSettings<string>> DelayedSettings {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<Nexus.Client.Settings.KeyedSettings<string>>)(this["DelayedSettings"]));
}
set {
this["DelayedSettings"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://skyrim.nexusmods.com/downloads/file.php?id=1334x")]
[global::System.Configuration.DefaultSettingValueAttribute("http://skyrim.nexusmods.com/downloads/file.php?id=1334")]
public string ModManagerUrl {
get {
return ((string)(this["ModManagerUrl"]));
@@ -466,9 +453,21 @@ namespace Nexus.Client.CLI.Properties {
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool UseMultithreadedDownloads {
get {
return ((bool)(this["UseMultithreadedDownloads"]));
}
set {
this["UseMultithreadedDownloads"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <KeyedSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<KeyedSettingsOfString />")]
public global::Nexus.Client.Settings.KeyedSettings<string> HelpLinks {
get {
return ((global::Nexus.Client.Settings.KeyedSettings<string>)(this["HelpLinks"]));
@@ -477,7 +476,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfString />")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> InstallationPaths {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["InstallationPaths"]));
@@ -489,7 +488,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfString />")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> ExecutablePaths {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["ExecutablePaths"]));
@@ -501,7 +500,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfBoolean />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfBoolean />")]
public global::Nexus.Client.Settings.PerGameModeSettings<bool> CompletedSetup {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<bool>)(this["CompletedSetup"]));
@@ -513,7 +512,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfString />")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> ModFolder {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["ModFolder"]));
@@ -525,8 +524,8 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfPerGameModeSettingsOfObject />\r\n " +
" ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfPerGameModeSetting" +
"sOfObject />")]
public global::Nexus.Client.Settings.PerGameModeSettings<Nexus.Client.Settings.PerGameModeSettings<object>> CustomGameModeSettings {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<Nexus.Client.Settings.PerGameModeSettings<object>>)(this["CustomGameModeSettings"]));
@@ -538,7 +537,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfString />")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> InstallInfoFolder {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["InstallInfoFolder"]));
@@ -550,7 +549,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <WindowPositions />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<WindowPositions />")]
public global::Nexus.Client.Settings.WindowPositions WindowPositions {
get {
return ((global::Nexus.Client.Settings.WindowPositions)(this["WindowPositions"]));
@@ -562,7 +561,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <KeyedSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<KeyedSettingsOfString />")]
public global::Nexus.Client.Settings.KeyedSettings<string> DockPanelLayouts {
get {
return ((global::Nexus.Client.Settings.KeyedSettings<string>)(this["DockPanelLayouts"]));
@@ -574,7 +573,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <ColumnWidths />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<ColumnWidths />")]
public global::Nexus.Client.Settings.ColumnWidths ColumnWidths {
get {
return ((global::Nexus.Client.Settings.ColumnWidths)(this["ColumnWidths"]));
@@ -586,7 +585,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <SplitterSizes />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<SplitterSizes />")]
public global::Nexus.Client.Settings.SplitterSizes SplitterSizes {
get {
return ((global::Nexus.Client.Settings.SplitterSizes)(this["SplitterSizes"]));
@@ -598,7 +597,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfString />")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> CustomLaunchCommands {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["CustomLaunchCommands"]));
@@ -610,7 +609,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfString />")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> CustomLaunchCommandArguments {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["CustomLaunchCommandArguments"]));
@@ -622,7 +621,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfString />")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> SelectedLaunchCommands {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["SelectedLaunchCommands"]));
@@ -634,7 +633,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <KeyedSettingsOfString />\r\n ")]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<KeyedSettingsOfString />")]
public global::Nexus.Client.Settings.KeyedSettings<string> RepositoryUsernames {
get {
return ((global::Nexus.Client.Settings.KeyedSettings<string>)(this["RepositoryUsernames"]));
@@ -643,5 +642,39 @@ namespace Nexus.Client.CLI.Properties {
this["RepositoryUsernames"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfKeyedSettingsOfStr" +
"ing />")]
public global::Nexus.Client.Settings.PerGameModeSettings<Nexus.Client.Settings.KeyedSettings<string>> DelayedSettings {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<Nexus.Client.Settings.KeyedSettings<string>>)(this["DelayedSettings"]));
}
set {
this["DelayedSettings"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<PerGameModeSettingsOfString />")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> ToolFolder {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["ToolFolder"]));
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowStartupMessage {
get {
return ((bool)(this["ShowStartupMessage"]));
}
set {
this["ShowStartupMessage"] = value;
}
}
}
}
+45 -52
View File
@@ -53,14 +53,8 @@
&lt;PerGameModeSettingsOfKeyedSettingsOfAddModDescriptor /&gt;
</Value>
</Setting>
<Setting Name="DelayedSettings" Type="Nexus.Client.Settings.PerGameModeSettings`1[Nexus.Client.Settings.KeyedSettings`1[System.String]]" Scope="User">
<Value Profile="(Default)">
&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfKeyedSettingsOfString /&gt;
</Value>
</Setting>
<Setting Name="ModManagerUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://skyrim.nexusmods.com/downloads/file.php?id=1334x</Value>
<Value Profile="(Default)">http://skyrim.nexusmods.com/downloads/file.php?id=1334</Value>
</Setting>
<Setting Name="CheckForUpdatesOnStartup" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
@@ -122,80 +116,79 @@
<Setting Name="SupportOfflineMode" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UseMultithreadedDownloads" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="HelpLinks" Type="Nexus.Client.Settings.KeyedSettings`1[System.String]" Scope="Application">
<Value Profile="(Default)">
&lt;KeyedSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;KeyedSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="InstallationPaths" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="ExecutablePaths" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="CompletedSetup" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.Boolean]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfBoolean /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfBoolean /&gt;</Value>
</Setting>
<Setting Name="ModFolder" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="CustomGameModeSettings" Type="Nexus.Client.Settings.PerGameModeSettings`1[Nexus.Client.Settings.PerGameModeSettings`1[System.Object]]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfPerGameModeSettingsOfObject /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfPerGameModeSettingsOfObject /&gt;</Value>
</Setting>
<Setting Name="InstallInfoFolder" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="WindowPositions" Type="Nexus.Client.Settings.WindowPositions" Scope="User">
<Value Profile="(Default)">
&lt;WindowPositions /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;WindowPositions /&gt;</Value>
</Setting>
<Setting Name="DockPanelLayouts" Type="Nexus.Client.Settings.KeyedSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;KeyedSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;KeyedSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="ColumnWidths" Type="Nexus.Client.Settings.ColumnWidths" Scope="User">
<Value Profile="(Default)">
&lt;ColumnWidths /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;ColumnWidths /&gt;</Value>
</Setting>
<Setting Name="SplitterSizes" Type="Nexus.Client.Settings.SplitterSizes" Scope="User">
<Value Profile="(Default)">
&lt;SplitterSizes /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;SplitterSizes /&gt;</Value>
</Setting>
<Setting Name="CustomLaunchCommands" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="CustomLaunchCommandArguments" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="SelectedLaunchCommands" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;PerGameModeSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="RepositoryUsernames" Type="Nexus.Client.Settings.KeyedSettings`1[System.String]" Scope="User">
<Value Profile="(Default)">
&lt;KeyedSettingsOfString /&gt;
</Value>
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;KeyedSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="DelayedSettings" Type="Nexus.Client.Settings.PerGameModeSettings`1[Nexus.Client.Settings.KeyedSettings`1[System.String]]" Scope="User">
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfKeyedSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="ToolFolder" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="Application">
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;PerGameModeSettingsOfString /&gt;</Value>
</Setting>
<Setting Name="ShowStartupMessage" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>
+207 -191
View File
@@ -1,193 +1,209 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Nexus.Client.CLI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Nexus.Client.CLI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<startup><supportedRuntime version="v2.0.50727" /></startup><userSettings>
<Nexus.Client.CLI.Properties.Settings>
<setting name="SettingsUpgraded" serializeAs="String">
<value>False</value>
</setting>
<setting name="InstalledGamesDetected" serializeAs="String">
<value>False</value>
</setting>
<setting name="RememberedGameMode" serializeAs="String">
<value />
</setting>
<setting name="ModCompressionLevel" serializeAs="String">
<value>Ultra</value>
</setting>
<setting name="ModCompressionFormat" serializeAs="String">
<value>SevenZip</value>
</setting>
<setting name="SelectedAddModCommandIndex" serializeAs="String">
<value>0</value>
</setting>
<setting name="CheckForNewModVersions" serializeAs="String">
<value>True</value>
</setting>
<setting name="AddMissingInfoToMods" serializeAs="String">
<value>False</value>
</setting>
<setting name="CloseModManagerAfterGameLaunch" serializeAs="String">
<value>True</value>
</setting>
<setting name="CloseModManagerAfterGameLaunchIsRemembered" serializeAs="String">
<value>False</value>
</setting>
<setting name="RememberGameMode" serializeAs="String">
<value>False</value>
</setting>
<setting name="ScanSubfoldersForMods" serializeAs="String">
<value>False</value>
</setting>
<setting name="CheckForUpdatesOnStartup" serializeAs="String">
<value>False</value>
</setting>
<setting name="NumberOfConnections" serializeAs="String">
<value>1</value>
</setting>
<setting name="UserLocation" serializeAs="String">
<value />
</setting>
<setting name="PremiumOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="UpdateCheckInterval" serializeAs="String">
<value>0</value>
</setting>
<setting name="LastUpdateCheckDate" serializeAs="String">
<value>0</value>
</setting>
<setting name="ModVersionsCheckInterval" serializeAs="String">
<value>0</value>
</setting>
<setting name="LastModVersionsCheckDate" serializeAs="String">
<value>0</value>
</setting>
<setting name="TempPathFolder" serializeAs="String">
<value />
</setting>
<setting name="TraceLogFolder" serializeAs="String">
<value />
</setting>
<setting name="ShowExpandedCategories" serializeAs="String">
<value>False</value>
</setting>
<setting name="ShowEmptyCategory" serializeAs="String">
<value>False</value>
</setting>
<setting name="HideModUpdateWarningIcon" serializeAs="String">
<value>False</value>
</setting>
<setting name="SkipReadmeFiles" serializeAs="String">
<value>False</value>
</setting>
<setting name="ShowSidePanel" serializeAs="String">
<value>False</value>
</setting>
<setting name="CategoryViewDefaultSortOrder" serializeAs="String">
<value>0</value>
</setting>
<setting name="CategoryViewDefaultSortColumn" serializeAs="String">
<value>0</value>
</setting>
<setting name="UseCategoryView" serializeAs="String">
<value>False</value>
</setting>
<setting name="OfflineMode" serializeAs="String">
<value>False</value>
</setting>
<setting name="SupportOfflineMode" serializeAs="String">
<value>False</value>
</setting>
<setting name="InstallationPaths" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString />
</value>
</setting>
<setting name="ExecutablePaths" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString />
</value>
</setting>
<setting name="CompletedSetup" serializeAs="Xml">
<value>
<PerGameModeSettingsOfBoolean />
</value>
</setting>
<setting name="ModFolder" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString />
</value>
</setting>
<setting name="CustomGameModeSettings" serializeAs="Xml">
<value>
<PerGameModeSettingsOfPerGameModeSettingsOfObject />
</value>
</setting>
<setting name="InstallInfoFolder" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString />
</value>
</setting>
<setting name="WindowPositions" serializeAs="Xml">
<value>
<WindowPositions />
</value>
</setting>
<setting name="DockPanelLayouts" serializeAs="Xml">
<value>
<KeyedSettingsOfString />
</value>
</setting>
<setting name="ColumnWidths" serializeAs="Xml">
<value>
<ColumnWidths />
</value>
</setting>
<setting name="SplitterSizes" serializeAs="Xml">
<value>
<SplitterSizes />
</value>
</setting>
<setting name="CustomLaunchCommands" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString />
</value>
</setting>
<setting name="CustomLaunchCommandArguments" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString />
</value>
</setting>
<setting name="SelectedLaunchCommands" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString />
</value>
</setting>
<setting name="RepositoryUsernames" serializeAs="Xml">
<value>
<KeyedSettingsOfString />
</value>
</setting>
</Nexus.Client.CLI.Properties.Settings>
</userSettings>
<applicationSettings>
<Nexus.Client.CLI.Properties.Settings>
<setting name="ModManagerUrl" serializeAs="String">
<value>http://skyrim.nexusmods.com/downloads/file.php?id=1334x</value>
</setting>
<setting name="HelpLinks" serializeAs="Xml">
<value>
<KeyedSettingsOfString />
</value>
</setting>
</Nexus.Client.CLI.Properties.Settings>
</applicationSettings>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Nexus.Client.CLI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Nexus.Client.CLI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<startup><supportedRuntime version="v2.0.50727"/></startup><userSettings>
<Nexus.Client.CLI.Properties.Settings>
<setting name="SettingsUpgraded" serializeAs="String">
<value>False</value>
</setting>
<setting name="InstalledGamesDetected" serializeAs="String">
<value>False</value>
</setting>
<setting name="RememberedGameMode" serializeAs="String">
<value/>
</setting>
<setting name="ModCompressionLevel" serializeAs="String">
<value>Ultra</value>
</setting>
<setting name="ModCompressionFormat" serializeAs="String">
<value>SevenZip</value>
</setting>
<setting name="SelectedAddModCommandIndex" serializeAs="String">
<value>0</value>
</setting>
<setting name="CheckForNewModVersions" serializeAs="String">
<value>True</value>
</setting>
<setting name="AddMissingInfoToMods" serializeAs="String">
<value>False</value>
</setting>
<setting name="CloseModManagerAfterGameLaunch" serializeAs="String">
<value>True</value>
</setting>
<setting name="CloseModManagerAfterGameLaunchIsRemembered" serializeAs="String">
<value>False</value>
</setting>
<setting name="RememberGameMode" serializeAs="String">
<value>False</value>
</setting>
<setting name="ScanSubfoldersForMods" serializeAs="String">
<value>False</value>
</setting>
<setting name="CheckForUpdatesOnStartup" serializeAs="String">
<value>False</value>
</setting>
<setting name="NumberOfConnections" serializeAs="String">
<value>1</value>
</setting>
<setting name="UserLocation" serializeAs="String">
<value/>
</setting>
<setting name="PremiumOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="UpdateCheckInterval" serializeAs="String">
<value>0</value>
</setting>
<setting name="LastUpdateCheckDate" serializeAs="String">
<value>0</value>
</setting>
<setting name="ModVersionsCheckInterval" serializeAs="String">
<value>0</value>
</setting>
<setting name="LastModVersionsCheckDate" serializeAs="String">
<value>0</value>
</setting>
<setting name="TempPathFolder" serializeAs="String">
<value/>
</setting>
<setting name="TraceLogFolder" serializeAs="String">
<value/>
</setting>
<setting name="ShowExpandedCategories" serializeAs="String">
<value>False</value>
</setting>
<setting name="ShowEmptyCategory" serializeAs="String">
<value>False</value>
</setting>
<setting name="HideModUpdateWarningIcon" serializeAs="String">
<value>False</value>
</setting>
<setting name="SkipReadmeFiles" serializeAs="String">
<value>False</value>
</setting>
<setting name="ShowSidePanel" serializeAs="String">
<value>False</value>
</setting>
<setting name="CategoryViewDefaultSortOrder" serializeAs="String">
<value>0</value>
</setting>
<setting name="CategoryViewDefaultSortColumn" serializeAs="String">
<value>0</value>
</setting>
<setting name="UseCategoryView" serializeAs="String">
<value>False</value>
</setting>
<setting name="OfflineMode" serializeAs="String">
<value>False</value>
</setting>
<setting name="SupportOfflineMode" serializeAs="String">
<value>False</value>
</setting>
<setting name="UseMultithreadedDownloads" serializeAs="String">
<value>False</value>
</setting>
<setting name="InstallationPaths" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString/>
</value>
</setting>
<setting name="ExecutablePaths" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString/>
</value>
</setting>
<setting name="CompletedSetup" serializeAs="Xml">
<value>
<PerGameModeSettingsOfBoolean/>
</value>
</setting>
<setting name="ModFolder" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString/>
</value>
</setting>
<setting name="CustomGameModeSettings" serializeAs="Xml">
<value>
<PerGameModeSettingsOfPerGameModeSettingsOfObject/>
</value>
</setting>
<setting name="InstallInfoFolder" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString/>
</value>
</setting>
<setting name="WindowPositions" serializeAs="Xml">
<value>
<WindowPositions/>
</value>
</setting>
<setting name="DockPanelLayouts" serializeAs="Xml">
<value>
<KeyedSettingsOfString/>
</value>
</setting>
<setting name="ColumnWidths" serializeAs="Xml">
<value>
<ColumnWidths/>
</value>
</setting>
<setting name="SplitterSizes" serializeAs="Xml">
<value>
<SplitterSizes/>
</value>
</setting>
<setting name="CustomLaunchCommands" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString/>
</value>
</setting>
<setting name="CustomLaunchCommandArguments" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString/>
</value>
</setting>
<setting name="SelectedLaunchCommands" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString/>
</value>
</setting>
<setting name="RepositoryUsernames" serializeAs="Xml">
<value>
<KeyedSettingsOfString/>
</value>
</setting>
<setting name="DelayedSettings" serializeAs="Xml">
<value>
<PerGameModeSettingsOfKeyedSettingsOfString/>
</value>
</setting>
<setting name="ShowStartupMessage" serializeAs="String">
<value>False</value>
</setting>
</Nexus.Client.CLI.Properties.Settings>
</userSettings>
<applicationSettings>
<Nexus.Client.CLI.Properties.Settings>
<setting name="ModManagerUrl" serializeAs="String">
<value>http://skyrim.nexusmods.com/downloads/file.php?id=1334</value>
</setting>
<setting name="HelpLinks" serializeAs="Xml">
<value>
<KeyedSettingsOfString/>
</value>
</setting>
<setting name="ToolFolder" serializeAs="Xml">
<value>
<PerGameModeSettingsOfString/>
</value>
</setting>
</Nexus.Client.CLI.Properties.Settings>
</applicationSettings>
</configuration>
+3 -3
View File
@@ -8,9 +8,9 @@ copy %_NMMPATH%\bin\Release\ICSharpCode.TextEditor.dll ..\..\output\NCC
copy %_NMMPATH%\bin\Release\ModManager.Interface.dll ..\..\output\NCC
copy %_NMMPATH%\bin\Release\Mods.dll ..\..\output\NCC
copy %_NMMPATH%\bin\Release\NexusClient.Interface.dll ..\..\output\NCC
copy %~dp0%bin\Release\NexusClientCLI.exe ..\..\output\NCC
copy %~dp0%bin\Release\NexusClientCLI.exe.config ..\..\output\NCC
copy %~dp0%bin\Release\NexusClientCLI.exe.manifest ..\..\output\NCC
copy %_NMMPATH%\bin\Release\NexusClientCLI.exe ..\..\output\NCC
copy %_NMMPATH%\bin\Release\NexusClientCLI.exe.config ..\..\output\NCC
copy %_NMMPATH%\bin\Release\NexusClientCLI.exe.manifest ..\..\output\NCC
copy %_NMMPATH%\bin\Release\Scripting.dll ..\..\output\NCC
copy %_NMMPATH%\bin\Release\SevenZipSharp.dll ..\..\output\NCC
copy %_NMMPATH%\bin\Release\Transactions.dll ..\..\output\NCC
+72
View File
@@ -0,0 +1,72 @@
param (
[switch]$debug = $false,
[switch]$release = $false
)
$ErrorActionPreference = "Stop"
if ($debug) {
$releaseType = "debug"
$outputPath = "..\..\outputd"
}
elseif ($release) {
$releaseType = "release"
$outputPath = "..\..\output"
}
else {
Write-Host "Usage: publish.ps1 <-debug|-release>"
exit 1
}
Write-Host "Publishing NCC build."
Write-Host "Release type: $releaseType"
Write-Host "Output directory: $outputPath"
Write-Host ""
$scriptDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
$NMMPath = "$scriptDirectory\NMM"
New-Item -ItemType directory -Force -Path "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\ChinhDo.Transactions.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\Commanding.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\GamebryoBase.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\ICSharpCode.TextEditor.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\ModManager.Interface.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\Mods.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\NexusClient.Interface.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\NexusClientCLI.exe" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\NexusClientCLI.exe.config" "$outputPath\NCC"
# Copy-Item "$NMMPATH\bin\Release\NexusClientCLI.exe.manifest" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\Scripting.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\SevenZipSharp.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\Transactions.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\UI.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\Util.dll" "$outputPath\NCC"
Copy-Item "$NMMPATH\bin\Release\WeifenLuo.WinFormsUI.Docking.dll" "$outputPath\NCC"
# stored in repository in binary form
Copy-Item "$scriptDirectory\NexusClientCLI\Castle.Core.dll" "$outputPath\NCC"
New-Item -ItemType directory -Force -Path "$outputPath\NCC\GameModes"
Copy-Item "$NMMPATH\bin\Release\GameModes\Fallout3.*" "$outputPath\NCC\GameModes"
Copy-Item "$NMMPATH\bin\Release\GameModes\FalloutNV.*" "$outputPath\NCC\GameModes"
Copy-Item "$NMMPATH\bin\Release\GameModes\Skyrim.*" "$outputPath\NCC\GameModes"
Copy-Item "$NMMPATH\bin\Release\GameModes\Oblivion.*" "$outputPath\NCC\GameModes"
Copy-Item "$NMMPATH\bin\Release\GameModes\GamebryoBase.dll" "$outputPath\NCC\GameModes"
New-Item -ItemType directory -Force -Path "$outputPath\NCC\GameModes\data"
# Copy-Item "$NMMPATH\..\bin\Release\BossDummy.dll" "$outputPath\NCC\GameModes\data\boss32.dll"
New-Item -ItemType directory -Force -Path "$outputPath\NCC\ModFormats"
Copy-Item "$NMMPATH\bin\Release\ModFormats\FOMod.dll" "$outputPath\NCC\ModFormats"
Copy-Item "$NMMPATH\bin\Release\ModFormats\OMod.dll" "$outputPath\NCC\ModFormats"
New-Item -ItemType directory -Force -Path "$outputPath\NCC\ScriptTypes"
Copy-Item "$NMMPATH\bin\Release\ScriptTypes\Antlr*.dll" "$outputPath\NCC\ScriptTypes"
Copy-Item "$NMMPATH\bin\Release\ScriptTypes\CSharpScript.dll" "$outputPath\NCC\ScriptTypes"
Copy-Item "$NMMPATH\bin\Release\ScriptTypes\ModScript.dll" "$outputPath\NCC\ScriptTypes"
Copy-Item "$NMMPATH\bin\Release\ScriptTypes\XmlScript.dll" "$outputPath\NCC\ScriptTypes"
New-Item -ItemType directory -Force -Path "$outputPath\NCC\data"
Copy-Item "$NMMPATH\bin\Release\data\7z-32bit.dll" "$outputPath\NCC\data"
Copy-Item "$NMMPATH\bin\Release\data\7z-64bit.dll" "$outputPath\NCC\data"