This view is of a higher level

To allow docker process isolation of our target container we start with a specific version container. It is desired that this process will work for all relased OS versions.

Using GUI Install of a component…

Large complexities of any scripted GUI install, require a design period to create extract the necessary GUI element info, an install method design and debug process, an orchestraion design using GUI install toolkit.

… or not

Downloads of installers with command line execution using docker. Copying of files and folders using docker.

The Overview of the building process

1) Start with a base container.

Choose a container version that can be used with docker –isolation=process. The derived containers will use less resources, there is a security trade-off in this decision.

2) Create a WinAppDriver enabled container.

Using the WinAppDriver Install Process is expected to be non-GUI.

3) A docker container with a base CYGWIN installed

Download the base cygwin installer, a non-GUI operation.

Install cygwin base - a GUI operation.

At this point decide on apt-cyg v. more GUI install

There is a choice to use a externally developed script to update installed cygwin packages. The trade-offs are depend on a large bash like shell script or invest in time to construct a complex javascript based GUI install. Or to furthor invest in a LISP based WinAppDriver client.

apt-cyg is a command line like cygwin updater given a package list and the install can is done.

The navigation of the CYGWIN GUI to install a package list could be a very complex script. This put the entire process under our control.

Status of support methods

  • orchestration design, still in exploration or hacking phase.
  • GUI Install toolkit, about 70% hacked, javascript based.
  • GUI Install toolkit, GUI element extraction had been in (POC) proof of concept for weeks.
  • GUI Install toolki in LISP, about 10% hacked.
  • apt-cyg install is an alpha product.
  • docker, download and script install are 90% POC

Update of design

setup-x86_64.exe has a the -P package1,package2,package3, ... packageN format, this can be used in CMD mode to install cygwin and additional packages.

Now setup-x86_64.exe needs to be downloaded from a website, https://cygwin.com/setup-x86_64.exe. Using Powershell and System.NetWebClient

$url = "https://cygwin.com/setup-x86_64.exe"
$output = "/setup-x86_64.exe"

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $output)