mirror of
https://github.com/ModOrganizer2/modorganizer-NCC.git
synced 2026-07-27 14:00:52 -07:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65a14e2b78 | ||
|
|
96ac387aae |
@@ -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>
|
||||
|
||||
@@ -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' ">
|
||||
|
||||
@@ -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
@@ -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"]));
|
||||
|
||||
@@ -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)">
|
||||
<KeyedSettingsOfString />
|
||||
</Value>
|
||||
<KeyedSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="InstallationPaths" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="ExecutablePaths" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="CompletedSetup" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.Boolean]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfBoolean />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfBoolean />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="ModFolder" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="CustomGameModeSettings" Type="Nexus.Client.Settings.PerGameModeSettings`1[Nexus.Client.Settings.PerGameModeSettings`1[System.Object]]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfPerGameModeSettingsOfObject />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfPerGameModeSettingsOfObject />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="InstallInfoFolder" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="WindowPositions" Type="Nexus.Client.Settings.WindowPositions" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<WindowPositions />
|
||||
</Value>
|
||||
<WindowPositions />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="DockPanelLayouts" Type="Nexus.Client.Settings.KeyedSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<KeyedSettingsOfString />
|
||||
</Value>
|
||||
<KeyedSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="ColumnWidths" Type="Nexus.Client.Settings.ColumnWidths" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<ColumnWidths />
|
||||
</Value>
|
||||
<ColumnWidths />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="SplitterSizes" Type="Nexus.Client.Settings.SplitterSizes" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<SplitterSizes />
|
||||
</Value>
|
||||
<SplitterSizes />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="CustomLaunchCommands" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="CustomLaunchCommandArguments" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="SelectedLaunchCommands" Type="Nexus.Client.Settings.PerGameModeSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
<PerGameModeSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
<Setting Name="RepositoryUsernames" Type="Nexus.Client.Settings.KeyedSettings`1[System.String]" Scope="User">
|
||||
<Value Profile="(Default)">
|
||||
<KeyedSettingsOfString />
|
||||
</Value>
|
||||
<KeyedSettingsOfString />
|
||||
</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
+194
-191
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user