Docker Community Forums

Share and learn in the Docker community.

MSI installation fails with 1603


(Beckot) #1

I am experiencing problems with installing a piece of software called M-Files to a windows server core container. I am proceeding with this nicely but the single missing piece is actually getting MSI to install unattended.

Instructions for unattended installation found from this PDF:

https://kb.cloudvault.m-files.com/link.ashx?Action=Download&vault=3ECA226F-7B54-428B-B539-DE443E6134EC&objectGUID=37850D76-BA05-42A0-9AC1-B0D45E78D9AC&fileGUID=35CEC215-EC02-4F28-84CF-FB68044F621F&ObjectVersion=-1

An example of the settings I would want to use are here:

msiexec /package M-Files_x64_eng_11_0_4210_0.msi /quiet ADDLOCAL=Server,ServerTools

The actual installer can be downloaded from M-Files CDN:

http://cdn.m-files.com/public/M-Files_11.3/M-Files_x64_eng_11_3_4330_254.msi

This works nicely on my local Windows 10 machine. However, when using verbose logging flag of “/l*v install.log” in a docker image, I just get a generic 1603 error indicating a fatal error.

Any tips on what gives? Can anyone else get this to install in a test bench?

Here’s the Dockerfile snippet I am using. Here are a couple of attempted fixes I’ve tried without success:

  1. The obvious: having all the ENV variables in the snippet below hard coded and skipping everything else except plain installation
  2. Not having -NoNewWindow flag present
  3. Not having the ADDLOCAL=… parameter present and testing various combinations there
  4. Replacing the “/package …” attribute with just “/i”

Here’s the Dockerfile snippet:

FROM microsoft/windowsservercore
SHELL ["powershell", "-command"]

# M-Files installer specs and SHA256 for security verification.
ENV MFILES_INSTALLER_URL="http://cdn.m-files.com/public/M-Files_11.3/M-Files_x64_eng_11_3_4330_254.msi" \
MFILES_INSTALLER_SHA256="1AB361E47EBACE119701DAD5EA79378C0C7DDD1FAA94A83AEA9DC2093C596DE3" \
MF_MSI_PATH="c:\setup\mf_dl.msi"

# Download the installer, test the SHA to verify security, install and delete installer.
RUN Invoke-WebRequest -OutFile $env:MF_MSI_PATH -Uri $env:MFILES_INSTALLER_URL; \
if ((Get-FileHash $env:MF_MSI_PATH -Algorithm sha256).Hash -ne $env:MFILES_INSTALLER_SHA256) {exit 1}; \
Start-Process 'msiexec.exe' -ArgumentList '/package', $env:MF_MSI_PATH, '/quiet', 'ADDLOCAL=Server,ServerTools' -Wait -NoNewWindow; \
Remove-Item $env:MF_MSI_PATH 

Appreciate the help!


(Beckot) #2

OK so found the answer from a closed M-Files developer community. I had to disable automatic updates for the app using a registry setting before attempting the installation. It works now.

Here’s the setting:

# Disable M-Files Automatic Update Client. Otherwise, the installation will fail.
New-Item -Path HKLM:\SOFTWARE\Motive
New-Item -Path HKLM:\SOFTWARE\Motive\M-Files
New-ItemProperty -Path HKLM:\SOFTWARE\Motive\M-Files -Name StartMFAUClient -Value 0 -PropertyType DWORD