Compare commits

...
Author SHA1 Message Date
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
10 changed files with 511 additions and 333 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ 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)
@@ -0,0 +1,124 @@
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)
{
if (!(bool) mod.GetType().GetMethod("ContainsFile").Invoke(mod, new object[] { p_strFile }))
{
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(p_strFile, p_outStream);
}
}
class ModExtension
{
}
}
@@ -8,6 +8,7 @@ using Nexus.Client.PluginManagement;
using Nexus.Client.Util;
using Nexus.Client.Games;
using ChinhDo.Transactions;
using Extensions;
namespace Nexus.Client.ModManagement
{
@@ -60,11 +61,11 @@ namespace Nexus.Client.ModManagement
/// <value>The manager to use to manage plugins.</value>
protected IPluginManager PluginManager { get; private set; }
/// <summary>
/// Gets whether the file is a mod or a plugin.
/// </summary>
/// <value>true or false.</value>
protected bool IsPlugin { get; private set; }
/// <summary>
/// Gets whether the file is a mod or a plugin.
/// </summary>
/// <value>true or false.</value>
protected bool IsPlugin { get; private set; }
#endregion
@@ -80,7 +81,7 @@ namespace Nexus.Client.ModManagement
/// <param name="p_dfuDataFileUtility">The utility class to use to work with data files.</param>
/// <param name="p_tfmFileManager">The transactional file manager to use to interact with the file system.</param>
/// <param name="p_dlgOverwriteConfirmationDelegate">The method to call in order to confirm an overwrite.</param>
/// <param name="p_UsesPlugins">Whether the file is a mod or a plugin.</param>
/// <param name="p_UsesPlugins">Whether the file is a mod or a plugin.</param>
public ModFileInstaller(IGameModeEnvironmentInfo p_gmiGameModeInfo, IMod p_modMod, IInstallLog p_ilgInstallLog, IPluginManager p_pmgPluginManager, IDataFileUtil p_dfuDataFileUtility, TxFileManager p_tfmFileManager, ConfirmItemOverwriteDelegate p_dlgOverwriteConfirmationDelegate, bool p_UsesPlugins)
{
GameModeInfo = p_gmiGameModeInfo;
@@ -90,7 +91,7 @@ namespace Nexus.Client.ModManagement
DataFileUtility = p_dfuDataFileUtility;
TransactionalFileManager = p_tfmFileManager;
m_dlgOverwriteConfirmationDelegate = p_dlgOverwriteConfirmationDelegate ?? ((s, b, m) => OverwriteResult.No);
IsPlugin = p_UsesPlugins;
IsPlugin = p_UsesPlugins;
}
#endregion
@@ -193,8 +194,76 @@ namespace Nexus.Client.ModManagement
/// not to overwrite an existing file.</returns>
public bool InstallFileFromMod(string p_strModFilePath, string p_strInstallPath, bool p_booSecondaryInstallPath)
{
byte[] bteModFile = Mod.GetFile(p_strModFilePath);
return GenerateDataFile(p_strInstallPath, bteModFile, p_booSecondaryInstallPath);
string destinationPath = installPath(p_strInstallPath, p_booSecondaryInstallPath);
if (!Directory.Exists(Path.GetDirectoryName(destinationPath)))
TransactionalFileManager.CreateDirectory(Path.GetDirectoryName(destinationPath));
else
{
if (!TestDoOverwrite(p_strInstallPath))
return false;
if (File.Exists(destinationPath))
{
FileInfo Info = new FileInfo(destinationPath);
if (Info.IsReadOnly == true)
File.SetAttributes(destinationPath, File.GetAttributes(destinationPath) & ~FileAttributes.ReadOnly);
string strInstallDirectory = Path.GetDirectoryName(p_strInstallPath);
string strBackupDirectory = Path.Combine(GameModeInfo.OverwriteDirectory, strInstallDirectory);
string strOldModKey = InstallLog.GetCurrentFileOwnerKey(p_strInstallPath);
if (strOldModKey == null)
{
InstallLog.LogOriginalDataFile(p_strInstallPath);
strOldModKey = InstallLog.OriginalValuesKey;
}
string strInstallingModKey = InstallLog.GetModKey(Mod);
//if this mod has installed this file already we just replace it and don't
// need to back it up.
if (!strOldModKey.Equals(strInstallingModKey))
{
//back up the current version of the file if the current mod
// didn't install it
if (!Directory.Exists(strBackupDirectory))
TransactionalFileManager.CreateDirectory(strBackupDirectory);
//we get the file name this way in order to preserve the file name's case
string strFile = Path.GetFileName(Directory.GetFiles(Path.GetDirectoryName(destinationPath), Path.GetFileName(destinationPath))[0]);
strFile = strOldModKey + "_" + strFile;
string strBackupFilePath = Path.Combine(strBackupDirectory, strFile);
Info = new FileInfo(strBackupFilePath);
if ((Info.IsReadOnly == true) && (File.Exists(strBackupFilePath)))
File.SetAttributes(strBackupFilePath, File.GetAttributes(strBackupFilePath) & ~FileAttributes.ReadOnly);
TransactionalFileManager.Copy(destinationPath, strBackupFilePath, true);
}
TransactionalFileManager.Delete(destinationPath);
}
}
using (FileStream stream = File.Create(destinationPath))
{
Mod.ExtractFileTo(p_strModFilePath, stream);
}
// Checks whether the file is a gamebryo plugin
if (IsPlugin)
if (PluginManager.IsActivatiblePluginFile(destinationPath))
PluginManager.AddPlugin(destinationPath);
InstallLog.AddDataFile(Mod, p_strInstallPath);
return IsPlugin;
}
private string installPath(string installPath, bool useSecondaryInstallPath)
{
DataFileUtility.AssertFilePathIsSafe(installPath);
string result = null;
if (useSecondaryInstallPath && !(String.IsNullOrEmpty(GameModeInfo.SecondaryInstallationPath)))
result = Path.Combine(GameModeInfo.SecondaryInstallationPath, installPath);
else
result = Path.Combine(GameModeInfo.InstallationPath, installPath);
return result;
}
/// <summary>
@@ -264,10 +333,10 @@ namespace Nexus.Client.ModManagement
}
}
TransactionalFileManager.WriteAllBytes(strInstallFilePath, p_bteData);
// Checks whether the file is a gamebryo plugin
if (IsPlugin)
if (PluginManager.IsActivatiblePluginFile(strInstallFilePath))
PluginManager.AddPlugin(strInstallFilePath);
// Checks whether the file is a gamebryo plugin
if (IsPlugin)
if (PluginManager.IsActivatiblePluginFile(strInstallFilePath))
PluginManager.AddPlugin(strInstallFilePath);
InstallLog.AddDataFile(Mod, p_strPath);
return IsPlugin;
}
@@ -276,62 +345,13 @@ namespace Nexus.Client.ModManagement
/// Uninstalls the specified file.
/// </summary>
/// <remarks>
/// If the mod we are uninstalling doesn't own the file, then its version is removed
/// from the overwrites directory. If the mod we are uninstalling overwrote a file when it
/// installed the specified file, then the overwritten file is restored. Otherwise
/// the file is deleted.
/// unsupported
/// </remarks>
/// <param name="p_strPath">The path to the file that is to be uninstalled.</param>
public void UninstallDataFile(string p_strPath)
/// <param name="p_booSecondaryInstallPath">Whether to use the secondary install path.</param>
public void UninstallDataFile(string p_strPath, bool p_booSecondaryInstallPath)
{
DataFileUtility.AssertFilePathIsSafe(p_strPath);
string strUninstallingModKey = InstallLog.GetModKey(Mod);
string strInstallFilePath = Path.Combine(GameModeInfo.InstallationPath, p_strPath);
string strBackupDirectory = Path.Combine(GameModeInfo.OverwriteDirectory, Path.GetDirectoryName(p_strPath));
if (File.Exists(strInstallFilePath))
{
string strCurrentOwnerKey = InstallLog.GetCurrentFileOwnerKey(p_strPath);
//if we didn't install the file, then leave it alone
if (strUninstallingModKey.Equals(strCurrentOwnerKey))
{
//if we did install the file, replace it with the file we overwrote
// when we installed the file
// if we didn't overwrite a file, then just delete the current file
TransactionalFileManager.Delete(strInstallFilePath);
if (IsPlugin)
if (PluginManager.IsActivatiblePluginFile(strInstallFilePath))
PluginManager.RemovePlugin(strInstallFilePath);
string strPreviousOwnerKey = InstallLog.GetPreviousFileOwnerKey(p_strPath);
if (strPreviousOwnerKey != null)
{
string strFile = strPreviousOwnerKey + "_" + Path.GetFileName(p_strPath);
string strRestoreFromPath = Path.Combine(strBackupDirectory, strFile);
if (File.Exists(strRestoreFromPath))
{
//we get the file name this way in order to preserve the file name's case
string strBackupFileName = Path.GetFileName(Directory.GetFiles(Path.GetDirectoryName(strRestoreFromPath), Path.GetFileName(strRestoreFromPath))[0]);
strBackupFileName = strBackupFileName.Substring(strBackupFileName.IndexOf('_') + 1);
string strNewDataPath = Path.Combine(Path.GetDirectoryName(strInstallFilePath), strBackupFileName);
TransactionalFileManager.Copy(strRestoreFromPath, strNewDataPath, true);
TransactionalFileManager.Delete(strRestoreFromPath);
}
}
//remove any empty directories from the data folder we may have created
TrimEmptyDirectories(Path.GetDirectoryName(strInstallFilePath), GameModeInfo.InstallationPath);
}
}
//remove our version of the file from the backup directory
string strOverwritePath = Path.Combine(strBackupDirectory, strUninstallingModKey + "_" + Path.GetFileName(p_strPath));
if (File.Exists(strOverwritePath))
TransactionalFileManager.Delete(strOverwritePath);
//remove any empty directories from the overwrite folder we may have created
string strStopDirectory = GameModeInfo.OverwriteDirectory;
TrimEmptyDirectories(Path.GetDirectoryName(strOverwritePath), strStopDirectory);
InstallLog.RemoveDataFile(Mod, p_strPath);
// NOP - Not supported in CLI version
}
/// <summary>
+31 -12
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,21 +43,13 @@
<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>
@@ -54,7 +59,7 @@
<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>
@@ -105,6 +110,8 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'x64' ">
<BaseAddress>4194304</BaseAddress>
@@ -123,13 +130,14 @@
<UseVSHostingProcess>true</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>PdbOnly</DebugType>
<Optimize>True</Optimize>
<OutputPath>..\bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<RunCodeAnalysis>true</RunCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<BaseAddress>4194304</BaseAddress>
@@ -156,6 +164,7 @@
<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="Mods\NexusModCacheManager.cs" />
<Compile Include="Pair.cs" />
@@ -182,6 +191,11 @@
<Project>{E824ACBB-90C8-4C60-9D52-9C8020E98E3E}</Project>
<Name>ChinhDo.Transactions.FileManager</Name>
</ProjectReference>
<ProjectReference Include="..\nmm\FOMod\FOMod.csproj">
<Project>{34b04f6b-0d64-455f-b20f-1c3e080ae601}</Project>
<Name>FOMod</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\NMM\GamebryoBase\GamebryoBase.csproj">
<Project>{0055FB79-3587-486E-A87E-70304A61D7A4}</Project>
<Name>GamebryoBase</Name>
@@ -198,6 +212,11 @@
<Project>{D586E7D8-9C8E-48F0-B20C-31A52B37E9D3}</Project>
<Name>NexusClient.Interface</Name>
</ProjectReference>
<ProjectReference Include="..\nmm\OMod\OMod.csproj">
<Project>{0b0e3c6e-c51d-473d-8605-7d7679338aa1}</Project>
<Name>OMod</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\NMM\Scripting\Scripting.csproj">
<Project>{66DC8748-2DC2-4E6E-B645-080E0CFDC831}</Project>
<Name>Scripting</Name>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory />
<PublishUrlHistory>c:\temp\ncc\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
@@ -11,11 +11,11 @@
<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>
<StartArguments>-g FalloutNV -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\gna2\plugins.txt" -i "D:\Tannin\Downloads\Advanced Recon Thermal Nightvision.fomod" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\Advanced Recon Gear"</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>
<StartArguments>-g Skyrim -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\gna2\plugins.txt" -i "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\downloads\Skyrim Immersive Creatures v6_5_2 NMM BAIN-24913-v6-5-2.7z" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\Skyrim Immersive Creatures"</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>
@@ -25,7 +25,7 @@
<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>
<StartArguments>-g Skyrim -p "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\profiles\gna2\plugins.txt" -i "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\downloads\Skyrim Immersive Creatures v6_5_2 NMM BAIN-24913-v6-5-2.7z" "D:\Tannin_Documents\Projects\ModOrganizer_sf\output\mods\Skyrim Immersive Creatures"</StartArguments>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+4 -5
View File
@@ -71,7 +71,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,7 +82,7 @@ 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)
@@ -169,8 +169,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";
@@ -190,7 +189,7 @@ namespace Nexus.Client.CLI
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)
// 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);
+30 -20
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.
@@ -12,7 +12,7 @@ namespace Nexus.Client.CLI.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -206,8 +206,7 @@ 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")]
[global::System.Configuration.DefaultSettingValueAttribute("\r\n <PerGameModeSettingsOfKeyedSettingsOfString />\r\n ")]
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"]));
@@ -466,9 +465,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("\r\n <KeyedSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.KeyedSettings<string> HelpLinks {
get {
return ((global::Nexus.Client.Settings.KeyedSettings<string>)(this["HelpLinks"]));
@@ -477,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("\r\n <PerGameModeSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> InstallationPaths {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["InstallationPaths"]));
@@ -489,7 +500,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("\r\n <PerGameModeSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> ExecutablePaths {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["ExecutablePaths"]));
@@ -501,7 +512,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("\r\n <PerGameModeSettingsOfBoolean />\r\n ")]
public global::Nexus.Client.Settings.PerGameModeSettings<bool> CompletedSetup {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<bool>)(this["CompletedSetup"]));
@@ -513,7 +524,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("\r\n <PerGameModeSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> ModFolder {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["ModFolder"]));
@@ -525,8 +536,7 @@ 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("\r\n <PerGameModeSettingsOfPerGameModeSettingsOfObject />\r\n ")]
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 +548,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("\r\n <PerGameModeSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> InstallInfoFolder {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["InstallInfoFolder"]));
@@ -550,7 +560,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("\r\n <WindowPositions />\r\n ")]
public global::Nexus.Client.Settings.WindowPositions WindowPositions {
get {
return ((global::Nexus.Client.Settings.WindowPositions)(this["WindowPositions"]));
@@ -562,7 +572,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("\r\n <KeyedSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.KeyedSettings<string> DockPanelLayouts {
get {
return ((global::Nexus.Client.Settings.KeyedSettings<string>)(this["DockPanelLayouts"]));
@@ -574,7 +584,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("\r\n <ColumnWidths />\r\n ")]
public global::Nexus.Client.Settings.ColumnWidths ColumnWidths {
get {
return ((global::Nexus.Client.Settings.ColumnWidths)(this["ColumnWidths"]));
@@ -586,7 +596,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("\r\n <SplitterSizes />\r\n ")]
public global::Nexus.Client.Settings.SplitterSizes SplitterSizes {
get {
return ((global::Nexus.Client.Settings.SplitterSizes)(this["SplitterSizes"]));
@@ -598,7 +608,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("\r\n <PerGameModeSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> CustomLaunchCommands {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["CustomLaunchCommands"]));
@@ -610,7 +620,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("\r\n <PerGameModeSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> CustomLaunchCommandArguments {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["CustomLaunchCommandArguments"]));
@@ -622,7 +632,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("\r\n <PerGameModeSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.PerGameModeSettings<string> SelectedLaunchCommands {
get {
return ((global::Nexus.Client.Settings.PerGameModeSettings<string>)(this["SelectedLaunchCommands"]));
@@ -634,7 +644,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("\r\n <KeyedSettingsOfString />\r\n ")]
public global::Nexus.Client.Settings.KeyedSettings<string> RepositoryUsernames {
get {
return ((global::Nexus.Client.Settings.KeyedSettings<string>)(this["RepositoryUsernames"]));
+33 -30
View File
@@ -122,80 +122,83 @@
<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>
&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>
&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>
&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>
&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>
&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>
&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>
&lt;PerGameModeSettingsOfString /&gt;
</Value>
</Setting>
<Setting Name="WindowPositions" Type="Nexus.Client.Settings.WindowPositions" Scope="User">
<Value Profile="(Default)">
&lt;WindowPositions /&gt;
</Value>
&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>
&lt;KeyedSettingsOfString /&gt;
</Value>
</Setting>
<Setting Name="ColumnWidths" Type="Nexus.Client.Settings.ColumnWidths" Scope="User">
<Value Profile="(Default)">
&lt;ColumnWidths /&gt;
</Value>
&lt;ColumnWidths /&gt;
</Value>
</Setting>
<Setting Name="SplitterSizes" Type="Nexus.Client.Settings.SplitterSizes" Scope="User">
<Value Profile="(Default)">
&lt;SplitterSizes /&gt;
</Value>
&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>
&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>
&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>
&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>
&lt;KeyedSettingsOfString /&gt;
</Value>
</Setting>
</Settings>
</SettingsFile>
+194 -191
View File
@@ -1,193 +1,196 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<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/><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>
</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>
</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