@ -529,20 +529,18 @@ namespace Emby.Server.Implementations.Updates
private async Task PerformPackageInstallation ( IProgress < double > progress , string target , PackageVersionInfo package , CancellationToken cancellationToken )
{
// Target based on if it is an archive or single assembly
var extension = Path . GetExtension ( package . targetFilename ) ;
var isArchive = string . Equals ( extension , ".zip" , StringComparison . OrdinalIgnoreCase ) ;
if ( ! isArchive )
{
_logger . LogError ( "Only zip packages are supported. {Filename} is not a zip archive." , package . targetFilename ) ;
return ;
}
if ( target = = null )
{
if ( isArchive )
{
target = Path . Combine ( _appPaths . PluginsPath , Path . GetFileNameWithoutExtension ( package . targetFilename ) ) ;
}
else
{
target = Path . Combine ( _appPaths . PluginsPath , package . targetFilename ) ;
}
target = Path . Combine ( _appPaths . PluginsPath , Path . GetFileNameWithoutExtension ( package . targetFilename ) ) ;
}
// Download to temporary file so that, if interrupted, it won't destroy the existing installation
@ -561,22 +559,14 @@ namespace Emby.Server.Implementations.Updates
// Success - move it to the real target
try
{
if ( isArchive )
{
using ( var stream = File . OpenRead ( tempFile ) )
{
_zipClient . ExtractAllFromZip ( stream , target , true ) ;
}
}
else
using ( var stream = File . OpenRead ( tempFile ) )
{
Directory . CreateDirectory ( Path . GetDirectoryName ( target ) ) ;
File . Copy ( tempFile , target , true ) ;
_zipClient . ExtractAllFromZip ( stream , target , true ) ;
}
}
catch ( IOException ex )
{
_logger . LogError ( ex , "Error attempting to move file from {TempFile} to {TargetFile}", tempFile , target ) ;
_logger . LogError ( ex , "Error attempting to extract {TempFile} to {TargetFile}" , tempFile , target ) ;
throw ;
}