Unified Remote is a mobile app that let’s you control your computer from your mobile phone.
Unfortunately there is no silent installer, MSI file or anything made available to easily silent install Unified Remote, yet…
Solving the driver problem
Unified Remote comes with a dedicated driver to work. So even if you run a silent install this will eventually popup.
The reason for this is because Windows does not know if you should trust the certificate of this driver, so it is asking you.
The popup defeats the purpose of a silent install, right?
There is no way to leave the driver out either ๐. The official documentation says you can just leave out “Enable driver input simulation“, but the popup still appears.
The best way to get the driver installed silently is by installing the driver separately prior to the software installation.
In order to do that we need a second “reference machine“, but we only have to do this once so don’t worry.
- First, install Unified Remote on a reference machine
- Backup the Unified Remote driver from the reference machine
- Manually install the driver certificate to the reference machine
- Export the certificate from the reference machine
Then we can proceed to make a silent installer that installs the certificate and continues installing Unified Remote.
1. Extract driver from the EXE
Since I am smart, I already know that the installer is an “Inno setup installer“. That means we can use innoextract to extract the contents of the EXE file with this command:
innounp.exe -x ServerSetup-3.6.1.2342.exe
We can find the driver file in the folder C:\UR\{app}\uvhid
.
2. Extract the certificate from the driver
Alternative 1:
Use the PowerShell script posted by Annih on stackoverflow. Replace C:\UR\{app}\uvhid\uvhid,1.sys
with the location of wherever you extracted your drivers in the previous step. Replace C:\UR\{app}\uvhid\output.cer
with the location in which you want to save the certificate file:
$driverFile = 'C:\UR\{app}\uvhid\uvhid,1.sys';
$outputFile = 'C:\UR\{app}\uvhid\output.cer';
$exportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert;
$cert = (Get-AuthenticodeSignature $driverFile).SignerCertificate;
[System.IO.File]::WriteAllBytes($outputFile, $cert.Export($exportType));
Alternative 2:
Use RussellEmenaker’s guide on how to silent install software that has unsigned drivers.
Silent install Unified Remote
Now that you have the certificate file you can use certutil
as a line in your silent install script to add the certificate to the computer.
Add something like this to your silent installer script:
certutil.exe -addstore -f "TrustedPublisher" driver\DriverCert.cer
My script looks like this:
@echo off
rem Set the title of the batch file
title Install Unified Remote
rem Go to the directory of this script
pushd "%~dp0"
rem Go to sub directory in this current folder called "installer"
cd /d "installer" 2>Nul || Exit /B
rem For every file beginning with the specified name that contains the extension do...
certutil.exe -addstore -f "TrustedPublisher" DriverCert.cer
for %%A In (ServerSetup*.exe) Do start "" /w "%%A" /VERYSILENT /LOADINF=settings.inf /SUPPRESSMSGBOXES /ALLUSERS /NOCANCEL /NORESTART
The directory looks like this:
๐ install.bat
๐ installer
โ โคท โ ServerSetup-3.6.1.2342.exe
โ โคท โ settings.inf
โ โคท โ DriverCert.cer
That’s it. Deploy that shit like a boss! ๐
Bonus solution: Unified Remote does not launch when computer starts?
In some cases, I have noticed that Unified Remote does not start when the computer boots, even if the “driver input simulation” was enabled during the installation.
In that case, you can make a Windows Task schedule that starts Unified Remote When the computer starts.
Just remember to enable “Run with highest priviliges” and “Run wether the user is logged on or not“.