add more content to dlna profile editing page

This commit is contained in:
Luke Pulverenti 2014-03-28 14:17:18 -04:00
parent ec49a65752
commit 934b3e668c
35 changed files with 98 additions and 100 deletions

View File

@ -102,7 +102,6 @@
<Compile Include="Security\PluginSecurityManager.cs" /> <Compile Include="Security\PluginSecurityManager.cs" />
<Compile Include="Serialization\JsonSerializer.cs" /> <Compile Include="Serialization\JsonSerializer.cs" />
<Compile Include="Serialization\XmlSerializer.cs" /> <Compile Include="Serialization\XmlSerializer.cs" />
<Compile Include="Updates\ApplicationUpdater.cs" />
<Compile Include="Updates\InstallationManager.cs" /> <Compile Include="Updates\InstallationManager.cs" />
<Compile Include="Security\UsageReporter.cs" /> <Compile Include="Security\UsageReporter.cs" />
</ItemGroup> </ItemGroup>

View File

@ -35,9 +35,9 @@ namespace MediaBrowser.Controller.Dlna
public enum CodecType public enum CodecType
{ {
VideoCodec = 0, Video = 0,
VideoAudioCodec = 1, VideoAudio = 1,
AudioCodec = 2 Audio = 2
} }
public class ProfileCondition public class ProfileCondition

View File

@ -32,7 +32,7 @@ namespace MediaBrowser.Dlna.PlayTo
var audioCodec = audioStream == null ? null : audioStream.Codec; var audioCodec = audioStream == null ? null : audioStream.Codec;
// Make sure audio codec profiles are satisfied // Make sure audio codec profiles are satisfied
if (!string.IsNullOrEmpty(audioCodec) && profile.CodecProfiles.Where(i => i.Type == CodecType.AudioCodec && i.ContainsCodec(audioCodec)) if (!string.IsNullOrEmpty(audioCodec) && profile.CodecProfiles.Where(i => i.Type == CodecType.Audio && i.ContainsCodec(audioCodec))
.All(i => AreConditionsSatisfied(i.Conditions, item.Path, null, audioStream))) .All(i => AreConditionsSatisfied(i.Conditions, item.Path, null, audioStream)))
{ {
playlistItem.Transcode = false; playlistItem.Transcode = false;
@ -53,7 +53,7 @@ namespace MediaBrowser.Dlna.PlayTo
playlistItem.AudioCodec = transcodingProfile.AudioCodec; playlistItem.AudioCodec = transcodingProfile.AudioCodec;
var audioTranscodingConditions = profile.CodecProfiles var audioTranscodingConditions = profile.CodecProfiles
.Where(i => i.Type == CodecType.AudioCodec && i.ContainsCodec(transcodingProfile.AudioCodec)) .Where(i => i.Type == CodecType.Audio && i.ContainsCodec(transcodingProfile.AudioCodec))
.Take(1) .Take(1)
.SelectMany(i => i.Conditions); .SelectMany(i => i.Conditions);
@ -114,13 +114,13 @@ namespace MediaBrowser.Dlna.PlayTo
var videoCodec = videoStream == null ? null : videoStream.Codec; var videoCodec = videoStream == null ? null : videoStream.Codec;
// Make sure video codec profiles are satisfied // Make sure video codec profiles are satisfied
if (!string.IsNullOrEmpty(videoCodec) && profile.CodecProfiles.Where(i => i.Type == CodecType.VideoCodec && i.ContainsCodec(videoCodec)) if (!string.IsNullOrEmpty(videoCodec) && profile.CodecProfiles.Where(i => i.Type == CodecType.Video && i.ContainsCodec(videoCodec))
.All(i => AreConditionsSatisfied(i.Conditions, item.Path, videoStream, audioStream))) .All(i => AreConditionsSatisfied(i.Conditions, item.Path, videoStream, audioStream)))
{ {
var audioCodec = audioStream == null ? null : audioStream.Codec; var audioCodec = audioStream == null ? null : audioStream.Codec;
// Make sure audio codec profiles are satisfied // Make sure audio codec profiles are satisfied
if (string.IsNullOrEmpty(audioCodec) || profile.CodecProfiles.Where(i => i.Type == CodecType.VideoAudioCodec && i.ContainsCodec(audioCodec)) if (string.IsNullOrEmpty(audioCodec) || profile.CodecProfiles.Where(i => i.Type == CodecType.VideoAudio && i.ContainsCodec(audioCodec))
.All(i => AreConditionsSatisfied(i.Conditions, item.Path, videoStream, audioStream))) .All(i => AreConditionsSatisfied(i.Conditions, item.Path, videoStream, audioStream)))
{ {
playlistItem.Transcode = false; playlistItem.Transcode = false;
@ -143,14 +143,14 @@ namespace MediaBrowser.Dlna.PlayTo
playlistItem.VideoCodec = transcodingProfile.VideoCodec; playlistItem.VideoCodec = transcodingProfile.VideoCodec;
var videoTranscodingConditions = profile.CodecProfiles var videoTranscodingConditions = profile.CodecProfiles
.Where(i => i.Type == CodecType.VideoCodec && i.ContainsCodec(transcodingProfile.VideoCodec)) .Where(i => i.Type == CodecType.Video && i.ContainsCodec(transcodingProfile.VideoCodec))
.Take(1) .Take(1)
.SelectMany(i => i.Conditions); .SelectMany(i => i.Conditions);
ApplyTranscodingConditions(playlistItem, videoTranscodingConditions); ApplyTranscodingConditions(playlistItem, videoTranscodingConditions);
var audioTranscodingConditions = profile.CodecProfiles var audioTranscodingConditions = profile.CodecProfiles
.Where(i => i.Type == CodecType.VideoAudioCodec && i.ContainsCodec(transcodingProfile.AudioCodec)) .Where(i => i.Type == CodecType.VideoAudio && i.ContainsCodec(transcodingProfile.AudioCodec))
.Take(1) .Take(1)
.SelectMany(i => i.Conditions); .SelectMany(i => i.Conditions);

View File

@ -113,7 +113,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "mpeg4", Codec = "mpeg4",
Conditions = new[] Conditions = new[]
@ -141,7 +141,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new[] Conditions = new[]
@ -175,7 +175,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3,aac,mp3", Codec = "ac3,aac,mp3",
Conditions = new[] Conditions = new[]

View File

@ -157,7 +157,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Conditions = new[] Conditions = new[]
{ {

View File

@ -145,7 +145,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "mpeg2video", Codec = "mpeg2video",
Conditions = new[] Conditions = new[]
@ -179,7 +179,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "mpeg4", Codec = "mpeg4",
Conditions = new[] Conditions = new[]
@ -213,7 +213,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new[] Conditions = new[]
@ -253,7 +253,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "wmv2,wmv3,vc1", Codec = "wmv2,wmv3,vc1",
Conditions = new[] Conditions = new[]
@ -287,7 +287,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3,wmav2,dca,aac,mp3", Codec = "ac3,wmav2,dca,aac,mp3",
Conditions = new[] Conditions = new[]

View File

@ -113,7 +113,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new [] Conditions = new []
{ {
@ -141,7 +141,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3", Codec = "ac3",
Conditions = new [] Conditions = new []
{ {

View File

@ -109,7 +109,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new [] Conditions = new []
{ {
@ -151,7 +151,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3", Codec = "ac3",
Conditions = new [] Conditions = new []
{ {
@ -167,7 +167,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "aac", Codec = "aac",
Conditions = new [] Conditions = new []
{ {

View File

@ -168,7 +168,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Conditions = new [] Conditions = new []
{ {
new ProfileCondition new ProfileCondition
@ -188,7 +188,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new [] Conditions = new []
{ {
@ -215,7 +215,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "mpeg2video", Codec = "mpeg2video",
Conditions = new [] Conditions = new []
{ {
@ -236,7 +236,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3", Codec = "ac3",
Conditions = new [] Conditions = new []
@ -252,7 +252,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "aac", Codec = "aac",
Conditions = new [] Conditions = new []

View File

@ -186,7 +186,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Conditions = new [] Conditions = new []
{ {
new ProfileCondition new ProfileCondition
@ -206,7 +206,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new [] Conditions = new []
{ {
@ -233,7 +233,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "mpeg2video", Codec = "mpeg2video",
Conditions = new [] Conditions = new []
{ {
@ -254,7 +254,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3", Codec = "ac3",
Conditions = new [] Conditions = new []
@ -270,7 +270,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "aac", Codec = "aac",
Conditions = new[] Conditions = new[]

View File

@ -198,7 +198,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Conditions = new[] Conditions = new[]
{ {
new ProfileCondition new ProfileCondition
@ -218,7 +218,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3", Codec = "ac3",
Conditions = new[] Conditions = new[]

View File

@ -231,7 +231,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Conditions = new [] Conditions = new []
{ {

View File

@ -85,7 +85,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new [] Conditions = new []
@ -128,7 +128,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3", Codec = "ac3",
Conditions = new [] Conditions = new []
@ -153,7 +153,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "wmapro", Codec = "wmapro",
Conditions = new [] Conditions = new []
@ -169,7 +169,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "aac", Codec = "aac",
Conditions = new [] Conditions = new []
@ -186,7 +186,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "aac", Codec = "aac",
Conditions = new [] Conditions = new []

View File

@ -195,7 +195,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new [] Conditions = new []
@ -223,7 +223,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "aac", Codec = "aac",
Conditions = new [] Conditions = new []

View File

@ -165,7 +165,7 @@ namespace MediaBrowser.Dlna.Profiles
{ {
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "mpeg4", Codec = "mpeg4",
Conditions = new [] Conditions = new []
{ {
@ -200,7 +200,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "h264", Codec = "h264",
Conditions = new [] Conditions = new []
{ {
@ -235,7 +235,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoCodec, Type = CodecType.Video,
Codec = "wmv2,wmv3,vc1", Codec = "wmv2,wmv3,vc1",
Conditions = new [] Conditions = new []
{ {
@ -270,7 +270,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "ac3,wmav2,wmapro", Codec = "ac3,wmav2,wmapro",
Conditions = new [] Conditions = new []
{ {
@ -286,7 +286,7 @@ namespace MediaBrowser.Dlna.Profiles
new CodecProfile new CodecProfile
{ {
Type = CodecType.VideoAudioCodec, Type = CodecType.VideoAudio,
Codec = "aac", Codec = "aac",
Conditions = new [] Conditions = new []
{ {

View File

@ -30,5 +30,6 @@
</TranscodingProfile> </TranscodingProfile>
</TranscodingProfiles> </TranscodingProfiles>
<ContainerProfiles /> <ContainerProfiles />
<CodecProfiles />
<MediaProfiles /> <MediaProfiles />
</Profile> </Profile>

View File

@ -34,5 +34,6 @@
</TranscodingProfile> </TranscodingProfile>
</TranscodingProfiles> </TranscodingProfiles>
<ContainerProfiles /> <ContainerProfiles />
<CodecProfiles />
<MediaProfiles /> <MediaProfiles />
</Profile> </Profile>

View File

@ -48,14 +48,14 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec" codec="mpeg4"> <CodecProfile type="Video" codec="mpeg4">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -63,7 +63,7 @@
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3,aac,mp3"> <CodecProfile type="VideoAudio" codec="ac3,aac,mp3">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" />
</Conditions> </Conditions>

View File

@ -34,5 +34,6 @@
</TranscodingProfile> </TranscodingProfile>
</TranscodingProfiles> </TranscodingProfiles>
<ContainerProfiles /> <ContainerProfiles />
<CodecProfiles />
<MediaProfiles /> <MediaProfiles />
</Profile> </Profile>

View File

@ -54,7 +54,7 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec"> <CodecProfile type="Video">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />

View File

@ -52,7 +52,7 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec" codec="mpeg2video"> <CodecProfile type="Video" codec="mpeg2video">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -60,7 +60,7 @@
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="30720000" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="30720000" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="mpeg4"> <CodecProfile type="Video" codec="mpeg4">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -68,7 +68,7 @@
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="8192000" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="8192000" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -77,7 +77,7 @@
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="wmv2,wmv3,vc1"> <CodecProfile type="Video" codec="wmv2,wmv3,vc1">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -85,7 +85,7 @@
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="25600000" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="25600000" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3,wmav2,dca,aac,mp3"> <CodecProfile type="VideoAudio" codec="ac3,wmav2,dca,aac,mp3">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" />
</Conditions> </Conditions>

View File

@ -52,14 +52,14 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3"> <CodecProfile type="VideoAudio" codec="ac3">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" />
</Conditions> </Conditions>

View File

@ -51,7 +51,7 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -60,12 +60,12 @@
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="15360000" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="15360000" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3"> <CodecProfile type="VideoAudio" codec="ac3">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="aac"> <CodecProfile type="VideoAudio" codec="aac">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="false" />
</Conditions> </Conditions>

View File

@ -49,31 +49,31 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec"> <CodecProfile type="Video">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="mpeg2video"> <CodecProfile type="Video" codec="mpeg2video">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3"> <CodecProfile type="VideoAudio" codec="ac3">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="aac"> <CodecProfile type="VideoAudio" codec="aac">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" />
<ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="true" /> <ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="true" />

View File

@ -52,31 +52,31 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec"> <CodecProfile type="Video">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="mpeg2video"> <CodecProfile type="Video" codec="mpeg2video">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3"> <CodecProfile type="VideoAudio" codec="ac3">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="aac"> <CodecProfile type="VideoAudio" codec="aac">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" />
<ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="true" /> <ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="true" />

View File

@ -54,13 +54,13 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec"> <CodecProfile type="Video">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3"> <CodecProfile type="VideoAudio" codec="ac3">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" />
</Conditions> </Conditions>

View File

@ -59,7 +59,7 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec"> <CodecProfile type="Video">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />

View File

@ -48,7 +48,7 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -57,23 +57,23 @@
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3"> <CodecProfile type="VideoAudio" codec="ac3">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="AudioBitrate" value="640000" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="AudioBitrate" value="640000" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="wmapro"> <CodecProfile type="VideoAudio" codec="wmapro">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="aac"> <CodecProfile type="VideoAudio" codec="aac">
<Conditions> <Conditions>
<ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="false" /> <ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="aac"> <CodecProfile type="VideoAudio" codec="aac">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" />
<ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="true" /> <ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="true" />

View File

@ -59,14 +59,14 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="aac"> <CodecProfile type="VideoAudio" codec="aac">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" />
</Conditions> </Conditions>

View File

@ -59,7 +59,7 @@
</ContainerProfile> </ContainerProfile>
</ContainerProfiles> </ContainerProfiles>
<CodecProfiles> <CodecProfiles>
<CodecProfile type="VideoCodec" codec="mpeg4"> <CodecProfile type="Video" codec="mpeg4">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1280" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1280" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="720" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="720" isRequired="true" />
@ -67,7 +67,7 @@
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="5120000" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="5120000" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="h264"> <CodecProfile type="Video" codec="h264">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -75,7 +75,7 @@
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="10240000" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="10240000" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoCodec" codec="wmv2,wmv3,vc1"> <CodecProfile type="Video" codec="wmv2,wmv3,vc1">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -83,12 +83,12 @@
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="15360000" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="15360000" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="ac3,wmav2,wmapro"> <CodecProfile type="VideoAudio" codec="ac3,wmav2,wmapro">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" />
</Conditions> </Conditions>
</CodecProfile> </CodecProfile>
<CodecProfile type="VideoAudioCodec" codec="aac"> <CodecProfile type="VideoAudio" codec="aac">
<Conditions> <Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="false" /> <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="false" />
<ProfileCondition condition="Equals" property="AudioProfile" value="lc" isRequired="false" /> <ProfileCondition condition="Equals" property="AudioProfile" value="lc" isRequired="false" />

View File

@ -32,6 +32,7 @@
</TranscodingProfile> </TranscodingProfile>
</TranscodingProfiles> </TranscodingProfiles>
<ContainerProfiles /> <ContainerProfiles />
<CodecProfiles />
<MediaProfiles> <MediaProfiles>
<MediaProfile container="avi" type="Video" mimeType="video/x-msvideo"> <MediaProfile container="avi" type="Video" mimeType="video/x-msvideo">
<Conditions /> <Conditions />

View File

@ -36,5 +36,6 @@
</TranscodingProfile> </TranscodingProfile>
</TranscodingProfiles> </TranscodingProfiles>
<ContainerProfiles /> <ContainerProfiles />
<CodecProfiles />
<MediaProfiles /> <MediaProfiles />
</Profile> </Profile>

View File

@ -1,12 +1,11 @@
using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Constants; using MediaBrowser.Common.Constants;
using MediaBrowser.Common.Implementations.Logging; using MediaBrowser.Common.Implementations.Logging;
using MediaBrowser.Common.Implementations.Updates;
using MediaBrowser.Controller;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using MediaBrowser.Server.Implementations; using MediaBrowser.Server.Implementations;
using MediaBrowser.ServerApplication.Native; using MediaBrowser.ServerApplication.Native;
using MediaBrowser.ServerApplication.Splash; using MediaBrowser.ServerApplication.Splash;
using MediaBrowser.ServerApplication.Updates;
using Microsoft.Win32; using Microsoft.Win32;
using System; using System;
using System.Configuration.Install; using System.Configuration.Install;
@ -490,7 +489,7 @@ namespace MediaBrowser.ServerApplication
try try
{ {
var serviceName = _isRunningAsService ? BackgroundService.Name : string.Empty; var serviceName = _isRunningAsService ? BackgroundService.Name : string.Empty;
new ApplicationUpdater().UpdateApplication(MBApplication.MBServer, appPaths, updateArchive, logger, serviceName); new ApplicationUpdater().UpdateApplication(appPaths, updateArchive, logger, serviceName);
// And just let the app exit so it can update // And just let the app exit so it can update
return true; return true;

View File

@ -145,6 +145,7 @@
<Compile Include="Splash\SplashForm.Designer.cs"> <Compile Include="Splash\SplashForm.Designer.cs">
<DependentUpon>SplashForm.cs</DependentUpon> <DependentUpon>SplashForm.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Updates\ApplicationUpdater.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />

View File

@ -3,14 +3,8 @@ using MediaBrowser.Model.Logging;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
namespace MediaBrowser.Common.Implementations.Updates namespace MediaBrowser.ServerApplication.Updates
{ {
public enum MBApplication
{
MBServer,
MBTheater
}
/// <summary> /// <summary>
/// Update the specified application using the specified archive /// Update the specified application using the specified archive
/// </summary> /// </summary>
@ -18,7 +12,7 @@ namespace MediaBrowser.Common.Implementations.Updates
{ {
private const string UpdaterExe = "Mediabrowser.Updater.exe"; private const string UpdaterExe = "Mediabrowser.Updater.exe";
private const string UpdaterDll = "Mediabrowser.InstallUtil.dll"; private const string UpdaterDll = "Mediabrowser.InstallUtil.dll";
public void UpdateApplication(MBApplication app, IApplicationPaths appPaths, string archive, ILogger logger, string restartServiceName) public void UpdateApplication(IApplicationPaths appPaths, string archive, ILogger logger, string restartServiceName)
{ {
// First see if there is a version file and read that in // First see if there is a version file and read that in
var version = "Unknown"; var version = "Unknown";
@ -39,7 +33,7 @@ namespace MediaBrowser.Common.Implementations.Updates
logger.Info("Copying updater dependencies to temporary location"); logger.Info("Copying updater dependencies to temporary location");
File.Copy(source, tempUpdaterDll, true); File.Copy(source, tempUpdaterDll, true);
var product = app == MBApplication.MBTheater ? "mbt" : "server"; const string product = "server";
// Our updater needs SS and ionic // Our updater needs SS and ionic
source = Path.Combine(appPaths.ProgramSystemPath, "ServiceStack.Text.dll"); source = Path.Combine(appPaths.ProgramSystemPath, "ServiceStack.Text.dll");
File.Copy(source, Path.Combine(Path.GetTempPath(), "ServiceStack.Text.dll"), true); File.Copy(source, Path.Combine(Path.GetTempPath(), "ServiceStack.Text.dll"), true);