MediaBrowser / Emby

Emby Server is a personal media server with apps on just about every device.
https://emby.media
GNU General Public License v2.0
4.18k stars 810 forks source link

Enable Flawless Installation On Windows Server Core 2016 #3175

Open softworkz opened 6 years ago

softworkz commented 6 years ago

This is a wrap-up of all the things learned so far about problems when emby is installed on a Windows Server Core 2016.

Setup

  1. Installation of the Visual C++ 2015 Runtime fails without notice. Potential remedies:
  1. Setup should reject installing a 32bit version on Windows Server Core

This is to simplify the dll checking that will be required. I wouldn't expect this to happen anyway, but in this post it is being talked about 32bit dlls...

Check and fix missing DLLs

The following dlls are required for ffmpeg:

(crtdll and the mui resource files are not required)

And these dlls are required for SkiaSharp:

The last two dlls are installed with the VC++ 2015 runtime. They can only be used to check for successful installation of the VC runtime, they cannot be installed just by copying (a lot of side-by-side binaries with appropriate policies need to be intalled)

For all other dlls it is sufficient to copy them into the System32 folder.

Implementation

Having the emby setup do that would be nice, but I don't think that this is going to happen ;-)

But I think we should do two things at least:

softworkz commented 6 years ago

Where to get those dlls?

A number of users have copied the dlls from a Windows 10 installation.

But there's a better way to get the "right" dlls for the server version:

LukePulverenti commented 6 years ago

I wonder if we could also just compile ffmpeg for windows with all dependencies self-contained.

softworkz commented 6 years ago

There is a msvfw32.lib but it is just a stub for dynamic linking to msvfw32.dll and suspect that it is similar for avicaps32. I guess, the reason is that these libraries are platform specific.

So no, we won't be able to compile this into ffmpeg, but in theory it might be possible to compile an ffmpeg version without these dependencies since we don't care about audio/video capabilities of the system we're running on. But I would need to investigate if this is high or low effort.

softworkz commented 6 years ago

One more note about the Skia installation:

I don't know why we stopped distributing the ImageMagick dlls. ImageMagick wouldn't require all those dlls like Skia, but: We would need to install the VC++ 2013 Runtime additionally (full package including MP stuff).

Again: All those runtimes could be merged into a single MSI package that could be installed silently.

softworkz commented 6 years ago

One more note: An MSI based setup for installing the runtimes would also solve the problem of #3027

LukePulverenti commented 6 years ago

Should we do anything here?

softworkz commented 6 years ago

Yes. All those and even a few more more issues could be addressed all at once with a single strike (MSI setup). Namely:

For Win Server Core

Did I forget anything?