Powershell Silent Install in Nano Server with Dock

2019-08-26 01:23发布

问题:

My docker file gets a Nano Server container and it adds Java automatically.

# Get nano server
FROM microsoft/nanoserver

# Download file and set in docker container
ADD http://javadl.oracle.com/webapps/download/AutoDL?BundleId=225355_090f390dda5b47b9b721c7dfaa008135 \ 
    'C:\\java\jre-8u151-windows-x64.exe'

# Silent install and delete install file
RUN powershell Start-Process -filepath C:\java\jre-8u151-windows-x64.exe -ArgumentList '/s,INSTALLDIR=c:\Java\jre1.8.0_151' -Passthru -Wait; \
    Remove-Item C:\\java\jre-8u151-windows-x64.exe -Force

CMD powershell

The process works correctly but in Nano Server it does not install anything without showing any error. However, with Core Server it does install it.

The result of the silent installation is:

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
              3      476       1464               596   1 jre-8u151-windows-x64

But then, when I check if it is installed with dir command, I see the following result:

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       12/21/2017  11:04 AM                Program Files
d-----        7/16/2016   2:09 PM                Program Files (x86)
d-r---        11/3/2017   8:44 PM                Users
d-----       12/21/2017  11:05 AM                Windows
-a----        7/24/2017   6:05 PM       65365056 jre-8u151-windows-x64.exe
-a----       11/20/2016  12:32 PM           1894 License.txt

How could I make this process work correctly or what alternative can I use?

回答1:

Windows nano server does not support MSI based installation. It supports WSA. Please refer to:

https://blogs.technet.microsoft.com/nanoserver/2015/11/18/installing-windows-server-apps-on-nano-server/