Assembly Naming, Default Windows Service Account

pull/110/head
Qstick 7 years ago
parent f1b1904e07
commit 10c29a65db

@ -136,8 +136,8 @@ Task("PackageMono").Does(() => {
DeleteFiles(outputFolderMono + "/sqlite3.*"); DeleteFiles(outputFolderMono + "/sqlite3.*");
DeleteFiles(outputFolderMono + "/MediaInfo.*"); DeleteFiles(outputFolderMono + "/MediaInfo.*");
// Adding NzbDrone.Core.dll.config (for dllmap) // Adding Lidarr.Core.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Core/NzbDrone.Core.dll.config", outputFolderMono + "/NzbDrone.Core.dll.config"); CopyFile(sourceFolder + "/NzbDrone.Core/Lidarr.Core.dll.config", outputFolderMono + "/Lidarr.Core.dll.config");
// Adding CurlSharp.dll.config (for dllmap) // Adding CurlSharp.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Common/CurlSharp.dll.config", outputFolderMono + "/CurlSharp.dll.config"); CopyFile(sourceFolder + "/NzbDrone.Common/CurlSharp.dll.config", outputFolderMono + "/CurlSharp.dll.config");
@ -148,11 +148,11 @@ Task("PackageMono").Does(() => {
MoveFile(outputFolderMono + "/Lidarr.Console.exe.config", outputFolderMono + "/Lidarr.exe.config"); MoveFile(outputFolderMono + "/Lidarr.Console.exe.config", outputFolderMono + "/Lidarr.exe.config");
MoveFile(outputFolderMono + "/Lidarr.Console.exe.mdb", outputFolderMono + "/Lidarr.exe.mdb"); MoveFile(outputFolderMono + "/Lidarr.Console.exe.mdb", outputFolderMono + "/Lidarr.exe.mdb");
// Remove NzbDrone.Windows.* // Remove Lidarr.Windows.*
DeleteFiles(outputFolderMono + "/NzbDrone.Windows.*"); DeleteFiles(outputFolderMono + "/Lidarr.Windows.*");
// Adding NzbDrone.Mono to updatePackage // Adding Lidarr.Mono to updatePackage
CopyFiles(outputFolderMono + "/NzbDrone.Mono.*", updateFolderMono); CopyFiles(outputFolderMono + "/Lidarr.Mono.*", updateFolderMono);
}); });
Task("PackageOsx").Does(() => { Task("PackageOsx").Does(() => {
@ -227,8 +227,8 @@ Task("PackageTests").Does(() => {
// Clean // Clean
CleanFolder(testPackageFolder, true); CleanFolder(testPackageFolder, true);
// Adding NzbDrone.Core.dll.config (for dllmap) // Adding Lidarr.Core.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Core/NzbDrone.Core.dll.config", testPackageFolder + "/NzbDrone.Core.dll.config"); CopyFile(sourceFolder + "/NzbDrone.Core/Lidarr.Core.dll.config", testPackageFolder + "/Lidarr.Core.dll.config");
// Adding CurlSharp.dll.config (for dllmap) // Adding CurlSharp.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Common/CurlSharp.dll.config", testPackageFolder + "/CurlSharp.dll.config"); CopyFile(sourceFolder + "/NzbDrone.Common/CurlSharp.dll.config", testPackageFolder + "/CurlSharp.dll.config");
@ -239,10 +239,10 @@ Task("PackageTests").Does(() => {
Task("CleanupWindowsPackage").Does(() => { Task("CleanupWindowsPackage").Does(() => {
// Remove mono // Remove mono
DeleteFiles(outputFolder + "/NzbDrone.Mono.*"); DeleteFiles(outputFolder + "/Lidarr.Mono.*");
// Adding NzbDrone.Windows to updatePackage // Adding Lidarr.Windows to updatePackage
CopyFiles(outputFolder + "/NzbDrone.Windows.*", updateFolder); CopyFiles(outputFolder + "/Lidarr.Windows.*", updateFolder);
}); });
Task("Build") Task("Build")

@ -158,8 +158,8 @@ PackageMono()
rm -f $outputFolderMono/sqlite3.* rm -f $outputFolderMono/sqlite3.*
rm -f $outputFolderMono/MediaInfo.* rm -f $outputFolderMono/MediaInfo.*
echo "Adding NzbDrone.Core.dll.config (for dllmap)" echo "Adding Lidarr.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $outputFolderMono cp $sourceFolder/NzbDrone.Core/Lidarr.Core.dll.config $outputFolderMono
echo "Adding CurlSharp.dll.config (for dllmap)" echo "Adding CurlSharp.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $outputFolderMono cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $outputFolderMono
@ -170,11 +170,11 @@ PackageMono()
mv "$file" "${file//.Console/}" mv "$file" "${file//.Console/}"
done done
echo "Removing NzbDrone.Windows" echo "Removing Lidarr.Windows"
rm $outputFolderMono/NzbDrone.Windows.* rm $outputFolderMono/Lidarr.Windows.*
echo "Adding NzbDrone.Mono to UpdatePackage" echo "Adding Lidarr.Mono to UpdatePackage"
cp $outputFolderMono/NzbDrone.Mono.* $updateFolderMono cp $outputFolderMono/Lidarr.Mono.* $updateFolderMono
echo "##teamcity[progressFinish 'Creating Mono Package']" echo "##teamcity[progressFinish 'Creating Mono Package']"
} }
@ -234,8 +234,8 @@ PackageTests()
CleanFolder $testPackageFolder true CleanFolder $testPackageFolder true
echo "Adding NzbDrone.Core.dll.config (for dllmap)" echo "Adding Lidarr.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $testPackageFolder cp $sourceFolder/NzbDrone.Core/Lidarr.Core.dll.config $testPackageFolder
echo "Adding CurlSharp.dll.config (for dllmap)" echo "Adding CurlSharp.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $testPackageFolder cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $testPackageFolder
@ -248,11 +248,11 @@ PackageTests()
CleanupWindowsPackage() CleanupWindowsPackage()
{ {
echo "Removing NzbDrone.Mono" echo "Removing Lidarr.Mono"
rm -f $outputFolder/NzbDrone.Mono.* rm -f $outputFolder/Lidarr.Mono.*
echo "Adding NzbDrone.Windows to UpdatePackage" echo "Adding Lidarr.Windows to UpdatePackage"
cp $outputFolder/NzbDrone.Windows.* $updateFolder cp $outputFolder/Lidarr.Windows.* $updateFolder
} }
# Use mono or .net depending on OS # Use mono or .net depending on OS

@ -1,3 +1,3 @@
REM SET BUILD_NUMBER=1 REM SET BUILD_NUMBER=1
REM SET branch=develop REM SET branch=develop
inno\ISCC.exe nzbdrone.iss inno\ISCC.exe lidarr.iss

@ -6,7 +6,7 @@
#define AppURL "https://lidarr.audio/" #define AppURL "https://lidarr.audio/"
#define ForumsURL "https://forums.lidarr.audio/" #define ForumsURL "https://forums.lidarr.audio/"
#define AppExeName "Lidarr.exe" #define AppExeName "Lidarr.exe"
#define BuildNumber "2.0" #define BuildNumber "0.3"
#define BuildNumber GetEnv('BUILD_NUMBER') #define BuildNumber GetEnv('BUILD_NUMBER')
#define BranchName GetEnv('branch') #define BranchName GetEnv('branch')

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Ical.Net; using Ical.Net;
using Ical.Net.DataTypes; using Ical.Net.DataTypes;
using Ical.Net.General;
using Ical.Net.Interfaces.Serialization; using Ical.Net.Interfaces.Serialization;
using Ical.Net.Serialization; using Ical.Net.Serialization;
using Ical.Net.Serialization.iCalendar.Factory; using Ical.Net.Serialization.iCalendar.Factory;
@ -67,6 +68,9 @@ namespace Lidarr.Api.V3.Calendar
ProductId = "-//lidarr.audio//Lidarr//EN" ProductId = "-//lidarr.audio//Lidarr//EN"
}; };
var calendarName = "Lidarr Music Schedule";
calendar.AddProperty(new CalendarProperty("NAME", calendarName));
calendar.AddProperty(new CalendarProperty("X-WR-CALNAME", calendarName));
foreach (var album in albums.OrderBy(v => v.ReleaseDate.Value)) foreach (var album in albums.OrderBy(v => v.ReleaseDate.Value))
{ {

@ -1,9 +1,9 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
[assembly: AssemblyTitle("NzbDrone.Api")] [assembly: AssemblyTitle("Lidarr.Api")]
[assembly: Guid("4c0922d7-979e-4ff7-b44b-b8ac2100eeb5")] [assembly: Guid("4c0922d7-979e-4ff7-b44b-b8ac2100eeb5")]
[assembly: InternalsVisibleTo("NzbDrone.Core")] [assembly: InternalsVisibleTo("Lidarr.Core")]

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Api.Test</RootNamespace> <RootNamespace>NzbDrone.Api.Test</RootNamespace>
<AssemblyName>NzbDrone.Api.Test</AssemblyName> <AssemblyName>Lidarr.Api.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Api.Test")] [assembly: AssemblyTitle("Lidarr.Api.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NzbDrone.Api.Test")] [assembly: AssemblyProduct("Lidarr.Api.Test")]
[assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyCopyright("Copyright © 2013")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.App.Test</RootNamespace> <RootNamespace>NzbDrone.App.Test</RootNamespace>
<AssemblyName>NzbDrone.App.Test</AssemblyName> <AssemblyName>Lidarr.App.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.App.Test")] [assembly: AssemblyTitle("Lidarr.App.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")] [assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("NzbDrone.App.Test")] [assembly: AssemblyProduct("Lidarr.App.Test")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] [assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -3,6 +3,7 @@ using Moq;
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Common; using NzbDrone.Common;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Processes;
using NzbDrone.Host; using NzbDrone.Host;
using NzbDrone.Test.Common; using NzbDrone.Test.Common;
@ -22,9 +23,12 @@ namespace NzbDrone.App.Test
public void Route_should_call_install_service_when_application_mode_is_install() public void Route_should_call_install_service_when_application_mode_is_install()
{ {
var serviceProviderMock = Mocker.GetMock<IServiceProvider>(MockBehavior.Strict); var serviceProviderMock = Mocker.GetMock<IServiceProvider>(MockBehavior.Strict);
serviceProviderMock.Setup(c => c.Install(ServiceProvider.SERVICE_NAME));
serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.SERVICE_NAME)).Returns(false); serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.SERVICE_NAME)).Returns(false);
serviceProviderMock.Setup(c => c.Start(ServiceProvider.SERVICE_NAME)); serviceProviderMock.Setup(c => c.Install(ServiceProvider.SERVICE_NAME));
serviceProviderMock.Setup(c => c.SetPermissions(ServiceProvider.SERVICE_NAME));
Mocker.GetMock<IProcessProvider>()
.Setup(c => c.SpawnNewProcess("sc.exe", It.IsAny<string>(), null, true));
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true); Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
Subject.Route(ApplicationModes.InstallService); Subject.Route(ApplicationModes.InstallService);
@ -37,13 +41,13 @@ namespace NzbDrone.App.Test
public void Route_should_call_uninstall_service_when_application_mode_is_uninstall() public void Route_should_call_uninstall_service_when_application_mode_is_uninstall()
{ {
var serviceProviderMock = Mocker.GetMock<IServiceProvider>(); var serviceProviderMock = Mocker.GetMock<IServiceProvider>();
serviceProviderMock.Setup(c => c.UnInstall(ServiceProvider.SERVICE_NAME)); serviceProviderMock.Setup(c => c.Uninstall(ServiceProvider.SERVICE_NAME));
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true); Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.SERVICE_NAME)).Returns(true); serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.SERVICE_NAME)).Returns(true);
Subject.Route(ApplicationModes.UninstallService); Subject.Route(ApplicationModes.UninstallService);
serviceProviderMock.Verify(c => c.UnInstall(ServiceProvider.SERVICE_NAME), Times.Once()); serviceProviderMock.Verify(c => c.Uninstall(ServiceProvider.SERVICE_NAME), Times.Once());
} }
[Test] [Test]

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Automation.Test</RootNamespace> <RootNamespace>NzbDrone.Automation.Test</RootNamespace>
<AssemblyName>NzbDrone.Automation.Test</AssemblyName> <AssemblyName>Lidarr.Automation.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Automation.Test")] [assembly: AssemblyTitle("Lidarr.Automation.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NzbDrone.Automation.Test")] [assembly: AssemblyProduct("Lidarr.Automation.Test")]
[assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyCopyright("Copyright © 2013")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Common.Test</RootNamespace> <RootNamespace>NzbDrone.Common.Test</RootNamespace>
<AssemblyName>NzbDrone.Common.Test</AssemblyName> <AssemblyName>Lidarr.Common.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
using FluentAssertions; using FluentAssertions;
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Common.Reflection; using NzbDrone.Common.Reflection;
@ -12,7 +12,7 @@ namespace NzbDrone.Common.Test.ReflectionTests
[Test] [Test]
public void should_get_properties_from_models() public void should_get_properties_from_models()
{ {
var models = Assembly.Load("NzbDrone.Core").ImplementationsOf<ModelBase>(); var models = Assembly.Load("Lidarr.Core").ImplementationsOf<ModelBase>();
foreach (var model in models) foreach (var model in models)
{ {
@ -23,9 +23,9 @@ namespace NzbDrone.Common.Test.ReflectionTests
[Test] [Test]
public void should_be_able_to_get_implementations() public void should_be_able_to_get_implementations()
{ {
var models = Assembly.Load("NzbDrone.Core").ImplementationsOf<ModelBase>(); var models = Assembly.Load("Lidarr.Core").ImplementationsOf<ModelBase>();
models.Should().NotBeEmpty(); models.Should().NotBeEmpty();
} }
} }
} }

@ -36,7 +36,7 @@ namespace NzbDrone.Common.Test
{ {
if (Subject.ServiceExist(TEMP_SERVICE_NAME)) if (Subject.ServiceExist(TEMP_SERVICE_NAME))
{ {
Subject.UnInstall(TEMP_SERVICE_NAME); Subject.Uninstall(TEMP_SERVICE_NAME);
} }
if (Subject.IsServiceRunning(ALWAYS_INSTALLED_SERVICE)) if (Subject.IsServiceRunning(ALWAYS_INSTALLED_SERVICE))
@ -65,7 +65,7 @@ namespace NzbDrone.Common.Test
Subject.ServiceExist(TEMP_SERVICE_NAME).Should().BeFalse("Service already installed"); Subject.ServiceExist(TEMP_SERVICE_NAME).Should().BeFalse("Service already installed");
Subject.Install(TEMP_SERVICE_NAME); Subject.Install(TEMP_SERVICE_NAME);
Subject.ServiceExist(TEMP_SERVICE_NAME).Should().BeTrue(); Subject.ServiceExist(TEMP_SERVICE_NAME).Should().BeTrue();
Subject.UnInstall(TEMP_SERVICE_NAME); Subject.Uninstall(TEMP_SERVICE_NAME);
Subject.ServiceExist(TEMP_SERVICE_NAME).Should().BeFalse(); Subject.ServiceExist(TEMP_SERVICE_NAME).Should().BeFalse();
ExceptionVerification.ExpectedWarns(1); ExceptionVerification.ExpectedWarns(1);
@ -76,7 +76,7 @@ namespace NzbDrone.Common.Test
[ManualTest] [ManualTest]
public void UnInstallService() public void UnInstallService()
{ {
Subject.UnInstall(ServiceProvider.SERVICE_NAME); Subject.Uninstall(ServiceProvider.SERVICE_NAME);
Subject.ServiceExist(ServiceProvider.SERVICE_NAME).Should().BeFalse(); Subject.ServiceExist(ServiceProvider.SERVICE_NAME).Should().BeFalse();
} }

@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
@ -18,8 +18,8 @@ namespace NzbDrone.Common.Composition
{ {
_loadedTypes = new List<Type>(); _loadedTypes = new List<Type>();
assemblies.Add(OsInfo.IsWindows ? "NzbDrone.Windows" : "NzbDrone.Mono"); assemblies.Add(OsInfo.IsWindows ? "Lidarr.Windows" : "Lidarr.Mono");
assemblies.Add("NzbDrone.Common"); assemblies.Add("Lidarr.Common");
foreach (var assembly in assemblies) foreach (var assembly in assemblies)
{ {

@ -30,6 +30,8 @@ namespace NzbDrone.Common.EnvironmentInfo
if (entry != null) if (entry != null)
{ {
ExecutingApplication = entry.Location; ExecutingApplication = entry.Location;
IsWindowsTray = OsInfo.IsWindows && entry.ManifestModule.Name == $"{ProcessProvider.LIDARR_PROCESS_NAME}.exe";
} }
} }
@ -146,5 +148,7 @@ namespace NzbDrone.Common.EnvironmentInfo
return true; return true;
} }
public bool IsWindowsTray { get; private set; }
} }
} }

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Common</RootNamespace> <RootNamespace>NzbDrone.Common</RootNamespace>
<AssemblyName>NzbDrone.Common</AssemblyName> <AssemblyName>Lidarr.Common</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,4 +1,4 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
@ -27,7 +27,7 @@ namespace NzbDrone.Common.Processes
bool Exists(string processName); bool Exists(string processName);
ProcessPriorityClass GetCurrentProcessPriority(); ProcessPriorityClass GetCurrentProcessPriority();
Process Start(string path, string args = null, StringDictionary environmentVariables = null, Action<string> onOutputDataReceived = null, Action<string> onErrorDataReceived = null); Process Start(string path, string args = null, StringDictionary environmentVariables = null, Action<string> onOutputDataReceived = null, Action<string> onErrorDataReceived = null);
Process SpawnNewProcess(string path, string args = null, StringDictionary environmentVariables = null); Process SpawnNewProcess(string path, string args = null, StringDictionary environmentVariables = null, bool noWindow = false);
ProcessOutput StartAndCapture(string path, string args = null, StringDictionary environmentVariables = null); ProcessOutput StartAndCapture(string path, string args = null, StringDictionary environmentVariables = null);
} }
@ -172,7 +172,7 @@ namespace NzbDrone.Common.Processes
return process; return process;
} }
public Process SpawnNewProcess(string path, string args = null, StringDictionary environmentVariables = null) public Process SpawnNewProcess(string path, string args = null, StringDictionary environmentVariables = null, bool noWindow = false)
{ {
if (PlatformInfo.IsMono && path.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase)) if (PlatformInfo.IsMono && path.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase))
{ {
@ -183,6 +183,9 @@ namespace NzbDrone.Common.Processes
_logger.Debug("Starting {0} {1}", path, args); _logger.Debug("Starting {0} {1}", path, args);
var startInfo = new ProcessStartInfo(path, args); var startInfo = new ProcessStartInfo(path, args);
startInfo.CreateNoWindow = noWindow;
startInfo.UseShellExecute = !noWindow;
var process = new Process var process = new Process
{ {
StartInfo = startInfo StartInfo = startInfo

@ -1,10 +1,10 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Common")] [assembly: AssemblyTitle("Lidarr.Common")]
// The following GUID is for the ID of the typelib if this project is exposed to COM // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("b6eaa144-e13b-42e5-a738-c60d89c0f728")] [assembly: Guid("b6eaa144-e13b-42e5-a738-c60d89c0f728")]

@ -1,11 +1,11 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// Gets updated at build time by TeamCity to branch name // Gets updated at build time by TeamCity to branch name
[assembly: AssemblyConfiguration("debug")] [assembly: AssemblyConfiguration("debug")]
[assembly: AssemblyCompany("lidarr.audio")] [assembly: AssemblyCompany("lidarr.audio")]
[assembly: AssemblyProduct("NzbDrone")] [assembly: AssemblyProduct("Lidarr")]
[assembly: AssemblyVersion("10.0.0.*")] [assembly: AssemblyVersion("10.0.0.*")]
[assembly: AssemblyCopyright("GNU General Public v3")] [assembly: AssemblyCopyright("GNU General Public v3")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]

@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
@ -7,7 +7,7 @@ namespace NzbDrone.Common.Reflection
{ {
public static class ReflectionExtensions public static class ReflectionExtensions
{ {
public static readonly Assembly CoreAssembly = Assembly.Load("NzbDrone.Core"); public static readonly Assembly CoreAssembly = Assembly.Load("Lidarr.Core");
public static List<PropertyInfo> GetSimpleProperties(this Type type) public static List<PropertyInfo> GetSimpleProperties(this Type type)
{ {
@ -70,4 +70,4 @@ namespace NzbDrone.Common.Reflection
return type.GetCustomAttributes(typeof(TAttribute), true).Any(); return type.GetCustomAttributes(typeof(TAttribute), true).Any();
} }
} }
} }

@ -1,10 +1,11 @@
using System; using System;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Configuration.Install; using System.Configuration.Install;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.ServiceProcess; using System.ServiceProcess;
using NLog; using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Processes; using NzbDrone.Common.Processes;
namespace NzbDrone.Common namespace NzbDrone.Common
@ -14,13 +15,14 @@ namespace NzbDrone.Common
bool ServiceExist(string name); bool ServiceExist(string name);
bool IsServiceRunning(string name); bool IsServiceRunning(string name);
void Install(string serviceName); void Install(string serviceName);
void UnInstall(string serviceName); void Uninstall(string serviceName);
void Run(ServiceBase service); void Run(ServiceBase service);
ServiceController GetService(string serviceName); ServiceController GetService(string serviceName);
void Stop(string serviceName); void Stop(string serviceName);
void Start(string serviceName); void Start(string serviceName);
ServiceControllerStatus GetStatus(string serviceName); ServiceControllerStatus GetStatus(string serviceName);
void Restart(string serviceName); void Restart(string serviceName);
void SetPermissions(string serviceName);
} }
public class ServiceProvider : IServiceProvider public class ServiceProvider : IServiceProvider
@ -30,7 +32,6 @@ namespace NzbDrone.Common
private readonly IProcessProvider _processProvider; private readonly IProcessProvider _processProvider;
private readonly Logger _logger; private readonly Logger _logger;
public ServiceProvider(IProcessProvider processProvider, Logger logger) public ServiceProvider(IProcessProvider processProvider, Logger logger)
{ {
_processProvider = processProvider; _processProvider = processProvider;
@ -66,7 +67,7 @@ namespace NzbDrone.Common
var installer = new ServiceProcessInstaller var installer = new ServiceProcessInstaller
{ {
Account = ServiceAccount.LocalSystem Account = ServiceAccount.LocalService
}; };
var serviceInstaller = new ServiceInstaller(); var serviceInstaller = new ServiceInstaller();
@ -89,7 +90,7 @@ namespace NzbDrone.Common
_logger.Info("Service Has installed successfully."); _logger.Info("Service Has installed successfully.");
} }
public virtual void UnInstall(string serviceName) public virtual void Uninstall(string serviceName)
{ {
_logger.Info("Uninstalling {0} service", serviceName); _logger.Info("Uninstalling {0} service", serviceName);
@ -189,5 +190,42 @@ namespace NzbDrone.Common
_processProvider.Start("cmd.exe", args); _processProvider.Start("cmd.exe", args);
} }
public void SetPermissions(string serviceName)
{
var dacls = GetServiceDacls(serviceName);
SetServiceDacls(serviceName, dacls);
}
private string GetServiceDacls(string serviceName)
{
var output = _processProvider.StartAndCapture("sc.exe", $"sdshow {serviceName}");
var dacls = output.Standard.Select(s => s.Content).Where(s => s.IsNotNullOrWhiteSpace()).ToList();
if (dacls.Count == 1)
{
return dacls[0];
}
throw new ArgumentException("Invalid DACL output");
}
private void SetServiceDacls(string serviceName, string dacls)
{
const string authenticatedUsersDacl = "(A;;CCLCSWRPWPLOCRRC;;;AU)";
if (dacls.Contains(authenticatedUsersDacl))
{
// Permssions already set
return;
}
var indexOfS = dacls.IndexOf("S:", StringComparison.InvariantCultureIgnoreCase);
dacls = indexOfS == -1 ? $"{dacls}{authenticatedUsersDacl}" : dacls.Insert(indexOfS, authenticatedUsersDacl);
_processProvider.Start("sc.exe", $"sdset {serviceName} {dacls}").WaitForExit();
}
} }
} }

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Core.Test</RootNamespace> <RootNamespace>NzbDrone.Core.Test</RootNamespace>
<AssemblyName>NzbDrone.Core.Test</AssemblyName> <AssemblyName>Lidarr.Core.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@ -6,11 +6,11 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Core.Test")] [assembly: AssemblyTitle("Lidarr.Core.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")] [assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("NzbDrone.Core.Test")] [assembly: AssemblyProduct("Lidarr.Core.Test")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] [assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
@ -25,4 +25,4 @@ using System.Runtime.InteropServices;
[assembly: Guid("699aed1b-015e-4f0d-9c81-d5557b05d260")] [assembly: Guid("699aed1b-015e-4f0d-9c81-d5557b05d260")]
[assembly: InternalsVisibleTo("NzbDrone.Core")] [assembly: InternalsVisibleTo("Lidarr.Core")]

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Core</RootNamespace> <RootNamespace>NzbDrone.Core</RootNamespace>
<AssemblyName>NzbDrone.Core</AssemblyName> <AssemblyName>Lidarr.Core</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkProfile> <TargetFrameworkProfile>
</TargetFrameworkProfile> </TargetFrameworkProfile>
@ -1059,7 +1059,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
<None Include="NzbDrone.Core.dll.config"> <None Include="Lidarr.Core.dll.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Include="packages.config" /> <None Include="packages.config" />

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@ -6,9 +6,9 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Core")] [assembly: AssemblyTitle("Lidarr.Core")]
// The following GUID is for the ID of the typelib if this project is exposed to COM // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("3C29FEF7-4B07-49ED-822E-1C29DC49BFAB")] [assembly: Guid("3C29FEF7-4B07-49ED-822E-1C29DC49BFAB")]
[assembly: InternalsVisibleTo("NzbDrone.Core.Test")] [assembly: InternalsVisibleTo("Lidarr.Core.Test")]

@ -14,9 +14,9 @@ namespace NzbDrone.Host
{ {
var assemblies = new List<string> var assemblies = new List<string>
{ {
"NzbDrone.Host", "Lidarr.Host",
"NzbDrone.Core", "Lidarr.Core",
"NzbDrone.SignalR", "Lidarr.SignalR",
"Lidarr.Api.V3", "Lidarr.Api.V3",
"Lidarr.Http" "Lidarr.Http"
}; };

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Host</RootNamespace> <RootNamespace>NzbDrone.Host</RootNamespace>
<AssemblyName>NzbDrone.Host</AssemblyName> <AssemblyName>Lidarr.Host</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkProfile> <TargetFrameworkProfile>

@ -1,5 +1,10 @@
using NLog; using System;
using NLog;
using NzbDrone.Common; using NzbDrone.Common;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Processes;
using IServiceProvider = NzbDrone.Common.IServiceProvider;
namespace NzbDrone.Host namespace NzbDrone.Host
{ {
@ -8,14 +13,19 @@ namespace NzbDrone.Host
private readonly INzbDroneServiceFactory _nzbDroneServiceFactory; private readonly INzbDroneServiceFactory _nzbDroneServiceFactory;
private readonly IServiceProvider _serviceProvider; private readonly IServiceProvider _serviceProvider;
private readonly IConsoleService _consoleService; private readonly IConsoleService _consoleService;
private readonly IProcessProvider _processProvider;
private readonly Logger _logger; private readonly Logger _logger;
public Router(INzbDroneServiceFactory nzbDroneServiceFactory, IServiceProvider serviceProvider, public Router(INzbDroneServiceFactory nzbDroneServiceFactory,
IConsoleService consoleService, Logger logger) IServiceProvider serviceProvider,
IConsoleService consoleService,
IProcessProvider processProvider,
Logger logger)
{ {
_nzbDroneServiceFactory = nzbDroneServiceFactory; _nzbDroneServiceFactory = nzbDroneServiceFactory;
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
_consoleService = consoleService; _consoleService = consoleService;
_processProvider = processProvider;
_logger = logger; _logger = logger;
} }
@ -48,7 +58,11 @@ namespace NzbDrone.Host
else else
{ {
_serviceProvider.Install(ServiceProvider.SERVICE_NAME); _serviceProvider.Install(ServiceProvider.SERVICE_NAME);
_serviceProvider.Start(ServiceProvider.SERVICE_NAME); _serviceProvider.SetPermissions(ServiceProvider.SERVICE_NAME);
// Start the service and exit.
// Ensures that there isn't an instance of Sonarr already running that the service account cannot stop.
_processProvider.SpawnNewProcess("sc.exe", $"start {ServiceProvider.SERVICE_NAME}", null, true);
} }
break; break;
} }
@ -61,7 +75,7 @@ namespace NzbDrone.Host
} }
else else
{ {
_serviceProvider.UnInstall(ServiceProvider.SERVICE_NAME); _serviceProvider.Uninstall(ServiceProvider.SERVICE_NAME);
} }
break; break;

@ -12,10 +12,10 @@ namespace NzbDrone.Integration.Test.ApiTests
[Test, Order(0)] [Test, Order(0)]
public void add_artist_with_tags_should_store_them() public void add_artist_with_tags_should_store_them()
{ {
EnsureNoArtist("266189", "Alien Ant Farm"); EnsureNoArtist("f59c5520-5f46-4d2c-b2c4-822eabf53419", "Linkin Park");
var tag = EnsureTag("abc"); var tag = EnsureTag("abc");
var artist = Artist.Lookup("lidarr:266189").Single(); var artist = Artist.Lookup("lidarr:f59c5520-5f46-4d2c-b2c4-822eabf53419").Single();
artist.QualityProfileId = 1; artist.QualityProfileId = 1;
artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName); artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName);
@ -31,9 +31,9 @@ namespace NzbDrone.Integration.Test.ApiTests
[Test, Order(0)] [Test, Order(0)]
public void add_artist_without_profileid_should_return_badrequest() public void add_artist_without_profileid_should_return_badrequest()
{ {
EnsureNoArtist("266189", "Alien Ant Farm"); EnsureNoArtist("f59c5520-5f46-4d2c-b2c4-822eabf53419", "Linkin Park");
var artist = Artist.Lookup("lidarr:266189").Single(); var artist = Artist.Lookup("lidarr:f59c5520-5f46-4d2c-b2c4-822eabf53419").Single();
artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName); artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName);
@ -43,9 +43,9 @@ namespace NzbDrone.Integration.Test.ApiTests
[Test, Order(0)] [Test, Order(0)]
public void add_artist_without_path_should_return_badrequest() public void add_artist_without_path_should_return_badrequest()
{ {
EnsureNoArtist("266189", "Alien Ant Farm"); EnsureNoArtist("f59c5520-5f46-4d2c-b2c4-822eabf53419", "Linkin Park");
var artist = Artist.Lookup("lidarr:266189").Single(); var artist = Artist.Lookup("lidarr:f59c5520-5f46-4d2c-b2c4-822eabf53419").Single();
artist.QualityProfileId = 1; artist.QualityProfileId = 1;
@ -55,9 +55,9 @@ namespace NzbDrone.Integration.Test.ApiTests
[Test, Order(1)] [Test, Order(1)]
public void add_artist() public void add_artist()
{ {
EnsureNoArtist("266189", "Alien Ant Farm"); EnsureNoArtist("f59c5520-5f46-4d2c-b2c4-822eabf53419", "Linkin Park");
var artist = Artist.Lookup("lidarr:266189").Single(); var artist = Artist.Lookup("lidarr:f59c5520-5f46-4d2c-b2c4-822eabf53419").Single();
artist.QualityProfileId = 1; artist.QualityProfileId = 1;
artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName); artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName);
@ -119,7 +119,7 @@ namespace NzbDrone.Integration.Test.ApiTests
[Test, Order(3)] [Test, Order(3)]
public void update_artist_monitored() public void update_artist_monitored()
{ {
var artist = EnsureArtist("266189", "Alien Ant Farm", false); var artist = EnsureArtist("f59c5520-5f46-4d2c-b2c4-822eabf53419", "Linkin Park", false);
artist.Monitored.Should().BeFalse(); artist.Monitored.Should().BeFalse();
//artist.Seasons.First().Monitored.Should().BeFalse(); //artist.Seasons.First().Monitored.Should().BeFalse();

@ -10,7 +10,7 @@ namespace NzbDrone.Integration.Test
{ {
private RestRequest BuildRequest() private RestRequest BuildRequest()
{ {
var request = new RestRequest("series"); var request = new RestRequest("artist");
request.AddHeader(AccessControlHeaders.RequestMethod, "POST"); request.AddHeader(AccessControlHeaders.RequestMethod, "POST");
return request; return request;

@ -40,7 +40,7 @@ namespace NzbDrone.Integration.Test
public ClientBase<BlacklistResource> Blacklist; public ClientBase<BlacklistResource> Blacklist;
public CommandClient Commands; public CommandClient Commands;
public DownloadClientClient DownloadClients; public DownloadClientClient DownloadClients;
public AlbumClient Episodes; public AlbumClient Albums;
public TrackClient Tracks; public TrackClient Tracks;
public ClientBase<HistoryResource> History; public ClientBase<HistoryResource> History;
public ClientBase<HostConfigResource> HostConfig; public ClientBase<HostConfigResource> HostConfig;
@ -101,7 +101,7 @@ namespace NzbDrone.Integration.Test
Blacklist = new ClientBase<BlacklistResource>(RestClient, ApiKey); Blacklist = new ClientBase<BlacklistResource>(RestClient, ApiKey);
Commands = new CommandClient(RestClient, ApiKey); Commands = new CommandClient(RestClient, ApiKey);
DownloadClients = new DownloadClientClient(RestClient, ApiKey); DownloadClients = new DownloadClientClient(RestClient, ApiKey);
Episodes = new AlbumClient(RestClient, ApiKey); Albums = new AlbumClient(RestClient, ApiKey);
History = new ClientBase<HistoryResource>(RestClient, ApiKey); History = new ClientBase<HistoryResource>(RestClient, ApiKey);
HostConfig = new ClientBase<HostConfigResource>(RestClient, ApiKey, "config/host"); HostConfig = new ClientBase<HostConfigResource>(RestClient, ApiKey, "config/host");
Indexers = new IndexerClient(RestClient, ApiKey); Indexers = new IndexerClient(RestClient, ApiKey);
@ -212,6 +212,7 @@ namespace NzbDrone.Integration.Test
var lookup = Artist.Lookup("lidarr:" + lidarrId); var lookup = Artist.Lookup("lidarr:" + lidarrId);
var artist = lookup.First(); var artist = lookup.First();
artist.QualityProfileId = 1; artist.QualityProfileId = 1;
artist.LanguageProfileId = 1;
artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName); artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName);
artist.Monitored = true; artist.Monitored = true;
artist.AddOptions = new Core.Music.AddArtistOptions(); artist.AddOptions = new Core.Music.AddArtistOptions();

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Integration.Test</RootNamespace> <RootNamespace>NzbDrone.Integration.Test</RootNamespace>
<AssemblyName>NzbDrone.Integration.Test</AssemblyName> <AssemblyName>Lidarr.Integration.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Smoke.Test")] [assembly: AssemblyTitle("Lidarr.Smoke.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NzbDrone.Smoke.Test")] [assembly: AssemblyProduct("Lidarr.Smoke.Test")]
[assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyCopyright("Copyright © 2013")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Libraries.Test</RootNamespace> <RootNamespace>NzbDrone.Libraries.Test</RootNamespace>
<AssemblyName>NzbDrone.Libraries.Test</AssemblyName> <AssemblyName>Lidarr.Libraries.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Libraries.Test")] [assembly: AssemblyTitle("Lidarr.Libraries.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NzbDrone.Libraries.Test")] [assembly: AssemblyProduct("Lidarr.Libraries.Test")]
[assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyCopyright("Copyright © 2013")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Mono.Test</RootNamespace> <RootNamespace>NzbDrone.Mono.Test</RootNamespace>
<AssemblyName>NzbDrone.Mono.Test</AssemblyName> <AssemblyName>Lidarr.Mono.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Mono.Test")] [assembly: AssemblyTitle("Lidarr.Mono.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NzbDrone.Mono.Test")] [assembly: AssemblyProduct("Lidarr.Mono.Test")]
[assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Mono</RootNamespace> <RootNamespace>NzbDrone.Mono</RootNamespace>
<AssemblyName>NzbDrone.Mono</AssemblyName> <AssemblyName>Lidarr.Mono</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkProfile /> <TargetFrameworkProfile />

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Mono")] [assembly: AssemblyTitle("Lidarr.Mono")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NzbDrone.Mono")] [assembly: AssemblyProduct("Lidarr.Mono")]
[assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.SignalR</RootNamespace> <RootNamespace>NzbDrone.SignalR</RootNamespace>
<AssemblyName>NzbDrone.SignalR</AssemblyName> <AssemblyName>Lidarr.SignalR</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,9 +1,9 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.SignalR")] [assembly: AssemblyTitle("Lidarr.SignalR")]
[assembly: Guid("98bd985a-4f23-4201-8ed3-f6f3d7f2a5fe")] [assembly: Guid("98bd985a-4f23-4201-8ed3-f6f3d7f2a5fe")]

@ -171,11 +171,11 @@ namespace NzbDrone.Test.Common.AutoMoq
private void RegisterPlatformLibrary(IUnityContainer container) private void RegisterPlatformLibrary(IUnityContainer container)
{ {
var assemblyName = "NzbDrone.Windows"; var assemblyName = "Lidarr.Windows";
if (OsInfo.IsNotWindows) if (OsInfo.IsNotWindows)
{ {
assemblyName = "NzbDrone.Mono"; assemblyName = "Lidarr.Mono";
} }
if (!File.Exists(assemblyName + ".dll")) if (!File.Exists(assemblyName + ".dll"))
@ -188,4 +188,4 @@ namespace NzbDrone.Test.Common.AutoMoq
#endregion #endregion
} }
} }

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Test.Common</RootNamespace> <RootNamespace>NzbDrone.Test.Common</RootNamespace>
<AssemblyName>NzbDrone.Test.Common</AssemblyName> <AssemblyName>Lidarr.Test.Common</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Test.Common")] [assembly: AssemblyTitle("Lidarr.Test.Common")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")] [assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("NzbDrone.Test.Common")] [assembly: AssemblyProduct("Lidarr.Test.Common")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] [assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -1,11 +1,11 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
namespace NzbDrone.Test.Dummy namespace NzbDrone.Test.Dummy
{ {
public class DummyApp public class DummyApp
{ {
public const string DUMMY_PROCCESS_NAME = "NzbDrone.Test.Dummy"; public const string DUMMY_PROCCESS_NAME = "Lidarr.Test.Dummy";
static void Main(string[] args) static void Main(string[] args)
{ {

@ -9,7 +9,7 @@
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Test.Dummy</RootNamespace> <RootNamespace>NzbDrone.Test.Dummy</RootNamespace>
<AssemblyName>NzbDrone.Test.Dummy</AssemblyName> <AssemblyName>Lidarr.Test.Dummy</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkProfile> <TargetFrameworkProfile>
</TargetFrameworkProfile> </TargetFrameworkProfile>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Test.Dummy")] [assembly: AssemblyTitle("Lidarr.Test.Dummy")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")] [assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("NzbDrone.Test.Dummy")] [assembly: AssemblyProduct("Lidarr.Test.Dummy")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] [assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Update.Test</RootNamespace> <RootNamespace>NzbDrone.Update.Test</RootNamespace>
<AssemblyName>NzbDrone.Update.Test</AssemblyName> <AssemblyName>Lidarr.Update.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkProfile> <TargetFrameworkProfile>
</TargetFrameworkProfile> </TargetFrameworkProfile>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Update.Test")] [assembly: AssemblyTitle("Lidarr.Update.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")] [assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("NzbDrone.Update.Test")] [assembly: AssemblyProduct("Lidarr.Update.Test")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] [assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -32,7 +32,7 @@ namespace NzbDrone.Update.Test
Subject.Start(AppType.Service, targetFolder); Subject.Start(AppType.Service, targetFolder);
Mocker.GetMock<IProcessProvider>().Verify(c => c.SpawnNewProcess("c:\\Lidarr\\Lidarr.Console.exe", "/" + StartupContext.NO_BROWSER, null), Times.Once()); Mocker.GetMock<IProcessProvider>().Verify(c => c.SpawnNewProcess("c:\\Lidarr\\Lidarr.Console.exe", "/" + StartupContext.NO_BROWSER, null, false), Times.Once());
ExceptionVerification.ExpectedWarns(1); ExceptionVerification.ExpectedWarns(1);
} }

@ -1,10 +1,10 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Update")] [assembly: AssemblyTitle("Lidarr.Update")]
// The following GUID is for the ID of the typelib if this project is exposed to COM // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e4560a3d-8053-4d57-a260-bfe52f4cc357")] [assembly: Guid("e4560a3d-8053-4d57-a260-bfe52f4cc357")]

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Windows.Test</RootNamespace> <RootNamespace>NzbDrone.Windows.Test</RootNamespace>
<AssemblyName>NzbDrone.Windows.Test</AssemblyName> <AssemblyName>Lidarr.Windows.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Windows.Test")] [assembly: AssemblyTitle("Lidarr.Windows.Test")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NzbDrone.Windows.Test")] [assembly: AssemblyProduct("Lidarr.Windows.Test")]
[assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -8,7 +8,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NzbDrone.Windows</RootNamespace> <RootNamespace>NzbDrone.Windows</RootNamespace>
<AssemblyName>NzbDrone.Windows</AssemblyName> <AssemblyName>Lidarr.Windows</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>

@ -1,14 +1,14 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("NzbDrone.Windows")] [assembly: AssemblyTitle("Lidarr.Windows")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NzbDrone.Windows")] [assembly: AssemblyProduct("Lidarr.Windows")]
[assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

@ -50,13 +50,11 @@ namespace ServiceInstall
process.BeginOutputReadLine(); process.BeginOutputReadLine();
process.WaitForExit(); process.WaitForExit();
} }
private static void OnDataReceived(object sender, DataReceivedEventArgs e) private static void OnDataReceived(object sender, DataReceivedEventArgs e)
{ {
Console.WriteLine(e.Data); Console.WriteLine(e.Data);
} }
} }
} }

@ -50,13 +50,11 @@ namespace ServiceUninstall
process.BeginOutputReadLine(); process.BeginOutputReadLine();
process.WaitForExit(); process.WaitForExit();
} }
private static void OnDataReceived(object sender, DataReceivedEventArgs e) private static void OnDataReceived(object sender, DataReceivedEventArgs e)
{ {
Console.WriteLine(e.Data); Console.WriteLine(e.Data);
} }
} }
} }

Loading…
Cancel
Save