Skip to content

Commit

Permalink
updated myrtille prerequisites
Browse files Browse the repository at this point in the history
fine tuned installation scripts
any uninstall failure is now logged but the uninstall continues, so that it can complete and re-install be possible!
  • Loading branch information
cedrozor committed Jan 26, 2020
1 parent e15a36d commit 8e5100b
Show file tree
Hide file tree
Showing 12 changed files with 23 additions and 21 deletions.
9 changes: 5 additions & 4 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
2020-01-25 Version 2.8.0 (stable)
2020-01-26 Version 2.8.0 (stable)
pre-requisites change; myrtille now requires Windows 8.1 or Windows Server 2012 R2 or greater
the installer is now shipped without bootstraper (Setup.exe); open the myrtille msi file directly instead
the installer now installs the myrtille pre-requisites automatically (roles and features); the related powershell scripts can also be run manually from outside the installer, if needed
the installer now supports upgrading (thanks to Orca, which allows finer control over msi files), removing the need to uninstall a previous version first
myrtille is now available as a docker image (see DOCUMENTATION.MD)
resynced FreeRDP (among many things, fixes some issues related to the clipboard and audio)
fixed session disconnect occuring under some circumstances on clipboard paste
fixed an issue where only the first letter of the clipboard content was displayed on clipboard paste
simplified hosts management (no domain or enterprise mode required); default login: admin/admin (changed upon first login)
updated the enterprise mode so that a member of "EnterpriseAdminGroup" can connect an host whatever the allowed groups or users defined on it (thanks dgcom)
fixed an issue with the enterprise mode, which prompted to change the password due to expiration whereas the expiration date was just not set (thanks dgcom)
the installer is now shipped without bootstraper (Setup.exe); open Myrtille.msi directly instead
the installer now installs the myrtille pre-requisites automatically (roles and features); the related script (Myrtille.Web\Install.ps1) can also be run manually from outside the installer, if needed
the installer now supports upgrading (thanks to Orca, which allows finer control over msi files), removing the need to uninstall a previous version first
security protocol is now configurable for RDP over VM bus
user domain is now configurable whatever the protocol and displayed into the toolbar, if defined
updated comments to drain disconnected sessions when using a connection broker in HA mode (myrtille services config)
Expand Down
12 changes: 5 additions & 7 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,19 +41,17 @@ I hope you will enjoy Myrtille! :)
Special thanks to Catalin Trifanescu for its support.

## Installation
You need at least IIS 7 before installing myrtille (the HTTP(S) to RDP/SSH gateway). It installs as a role on Windows Servers and as a feature on others Windows versions.
Starting from version 2.8.0, the Myrtille requirements change: Windows 8.1 or Windows Server 2012 R2 or greater. This is partly because of the automated installation of the roles and features required by myrtille (which requires a modern powershell) and partly to deliver the best user experience possible (fast display and audio support), as HTML5 websockets (supported by all browsers nowadays) are only available in IIS 8.0+ (Windows 8.1 or Windows Server 2012 R2 or greater).

**CAUTION! If you want to use websockets**, you need IIS 8 or greater with the websocket protocol enabled (disabled by default; see https://www.iis.net/configreference/system.webserver/websocket).
That said, Myrtille will continue to fallback to HTML4 (xhr and long-polling) if websockets are not enabled into IIS (it's optional) or if the websocket traffic is blocked by any network equipment.

The .NET 4.5+ framework can be installed automatically by the myrtille installer (Setup.exe), enabled as a feature of IIS (Web Server role > Applications Development > ASP.NET 4.5 on Windows Server 2012) or installed separately (https://www.microsoft.com/en-us/download/details.aspx?id=30653).
The .NET 4.5+ framework can be installed automatically by the myrtille installer, enabled as a feature of IIS (Web Server role > Applications Development > ASP.NET 4.5 on Windows Server 2012) or installed separately (https://www.microsoft.com/en-us/download/details.aspx?id=30653).

Into the roles and features management, ensure you have enabled **HTTP Activation** under ".NET Framework 4.5+ Features" > "WCF Services" (required by the Myrtille services and REST API).

The installer does install myrtille under the IIS default website and creates a custom application pool ("MyrtilleAppPool"). If you want to use another website or application pool, you can change it manually afterward (with the IIS manager).

All releases here: https://github.com/cedrozor/myrtille/releases
- Setup.exe (preferred installation method): setup bootstrapper
- Myrtille.msi: MSI package (x86)

## Docker
From version 2.8.0, Myrtille is available as a docker image.
Expand Down Expand Up @@ -163,7 +161,7 @@ If your browser machine is on the same network as the gateway or the remote serv
If your remote server have internet access, you can also use a cloud printer (such a Google Print).

## Security
The installer can create a self-signed certificate for myrtille (so you can use it at https://myserver/myrtille), but you can set your own certificate (if you wish).
The installer can create a self-signed certificate for myrtille (so you can use it at https://myserver/myrtille), but you can set your own certificate (if you wish) to prevent the users from having to add a security exception into their browser.

## Configuration / Performance tweaks / Debug
Both the gateway and services have their own .NET config files; the gateway also uses XDT transform files to adapt the settings depending on the current solution configuration.
Expand Down Expand Up @@ -369,7 +367,7 @@ See the Myrtille.Admin.Web **mockup** to see how to implement Myrtille into your
- the clipboard synchronization requires Chrome (or async clipboard API support) and HTTPS connection and is limited to text only and 1MB max

## Troubleshoot
First at all, ensure the Myrtille prerequisites are met (IIS 7 or greater (preferably IIS 8+ with websocket protocol enabled) and .NET 4.5+). Note that IIS must be installed separately, before running the installer (see "Installation").
First at all, ensure the Myrtille prerequisites are met (see "Installation").

Also please read notes and limitations above.

Expand Down
Binary file not shown.
Binary file modified Myrtille.Admin.Services/Myrtille.Admin.Services.Uninstall.ps1
Binary file not shown.
7 changes: 4 additions & 3 deletions Myrtille.Admin.Services/ServicesInstaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public override void Install(
" -Command \"& '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "bin", "Myrtille.Admin.Services.Install.ps1") + "'" +
" -BinaryPath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "bin", "Myrtille.Admin.Services.exe") + "'" +
" -DebugMode " + (debug ? "1" : "0") +
" 3>&1 2>&1 | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Admin.Services.Install.log") + "'" + "\"";
" | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Admin.Services.Install.log") + "'" + "\"";

process.Start();
process.WaitForExit();
Expand Down Expand Up @@ -162,7 +162,7 @@ private void DoUninstall()
process.StartInfo.Arguments = "-ExecutionPolicy Bypass" +
" -Command \"& '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "bin", "Myrtille.Admin.Services.Uninstall.ps1") + "'" +
" -DebugMode " + (debug ? "1" : "0") +
" 3>&1 2>&1 | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Admin.Services.Uninstall.log") + "'" + "\"";
" | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Admin.Services.Uninstall.log") + "'" + "\"";

process.Start();
process.WaitForExit();
Expand All @@ -177,8 +177,9 @@ private void DoUninstall()
}
catch (Exception exc)
{
// in case of any error, don't rethrow the exception or myrtille won't be uninstalled otherwise (rollback action)
// if myrtille can't be uninstalled, it can't be re-installed either! (at least, with an installer of the same product code)
Context.LogMessage(string.Format("Failed to uninstall Myrtille.Admin.Services ({0})", exc));
throw;
}
}
}
Expand Down
Binary file modified Myrtille.Services/Myrtille.Services.Install.ps1
Binary file not shown.
Binary file modified Myrtille.Services/Myrtille.Services.Uninstall.ps1
Binary file not shown.
7 changes: 4 additions & 3 deletions Myrtille.Services/ServicesInstaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public override void Install(
" -Command \"& '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "bin", "Myrtille.Services.Install.ps1") + "'" +
" -BinaryPath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "bin", "Myrtille.Services.exe") + "'" +
" -DebugMode " + (debug ? "1" : "0") +
" 3>&1 2>&1 | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Services.Install.log") + "'" + "\"";
" | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Services.Install.log") + "'" + "\"";

process.Start();
process.WaitForExit();
Expand Down Expand Up @@ -242,7 +242,7 @@ private void DoUninstall()
process.StartInfo.Arguments = "-ExecutionPolicy Bypass" +
" -Command \"& '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "bin", "Myrtille.Services.Uninstall.ps1") + "'" +
" -DebugMode " + (debug ? "1" : "0") +
" 3>&1 2>&1 | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Services.Uninstall.log") + "'" + "\"";
" | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Services.Uninstall.log") + "'" + "\"";

process.Start();
process.WaitForExit();
Expand All @@ -261,8 +261,9 @@ private void DoUninstall()
}
catch (Exception exc)
{
// in case of any error, don't rethrow the exception or myrtille won't be uninstalled otherwise (rollback action)
// if myrtille can't be uninstalled, it can't be re-installed either! (at least, with an installer of the same product code)
Context.LogMessage(string.Format("Failed to uninstall Myrtille.Services ({0})", exc));
throw;
}
}
}
Expand Down
Binary file modified Myrtille.Web/Myrtille.Web.Install.ps1
Binary file not shown.
Binary file modified Myrtille.Web/Myrtille.Web.Uninstall.ps1
Binary file not shown.
7 changes: 4 additions & 3 deletions Myrtille.Web/src/WebInstaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public override void Install(
" -InstallPath '" + Path.GetFullPath(Context.Parameters["targetdir"]) + "'" +
" -SslCert " + (!string.IsNullOrEmpty(Context.Parameters["SSLCERT"]) ? "1" : "0") +
" -DebugMode " + (debug ? "1" : "0") +
" 3>&1 2>&1 | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Web.Install.log") + "'" + "\"";
" | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Web.Install.log") + "'" + "\"";

process.Start();
process.WaitForExit();
Expand Down Expand Up @@ -243,7 +243,7 @@ private void DoUninstall()
process.StartInfo.Arguments = "-ExecutionPolicy Bypass" +
" -Command \"& '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "Myrtille.Web.Uninstall.ps1") + "'" +
" -DebugMode " + (debug ? "1" : "0") +
" 3>&1 2>&1 | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Web.Uninstall.log") + "'" + "\"";
" | Tee-Object -FilePath '" + Path.Combine(Path.GetFullPath(Context.Parameters["targetdir"]), "log", "Myrtille.Web.Uninstall.log") + "'" + "\"";

process.Start();
process.WaitForExit();
Expand All @@ -258,8 +258,9 @@ private void DoUninstall()
}
catch (Exception exc)
{
// in case of any error, don't rethrow the exception or myrtille won't be uninstalled otherwise (rollback action)
// if myrtille can't be uninstalled, it can't be re-installed either! (at least, with an installer of the same product code)
Context.LogMessage(string.Format("Failed to uninstall Myrtille.Web ({0})", exc));
throw;
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ More information in the DOCUMENTATION.md file.

## Requirements
- Browser: any HTML4 or HTML5 browser (starting from IE6!). No extension or administrative rights required. The clipboard synchronization requires Chrome (or async clipboard API support) and HTTPS connection
- Gateway (myrtille): IIS 7 or greater (preferably IIS 8+ with websocket protocol enabled) and .NET 4.5+ (with WCF Services > HTTP Activation enabled)
- Gateway (myrtille): Windows 8.1 or Windows Server 2012 R2 or greater (IIS 8.0+, .NET 4.5+ and WCF/HTTP activation enabled)
- RDP server: any RDP enabled machine (preferably Windows Server but can also be Windows XP, 7, 8, 10 or Linux xRDP server)
- SSH server: any SSH server (tests were made using the built-in Windows 10 OpenSSH server)

Expand Down

0 comments on commit 8e5100b

Please sign in to comment.