Windows silent install

Hi everyone,

We’d like to install Natron on several Windows 10 machines at once using a batch script executing at OS startup. I tried to use the following flags: “/SP- /SILENT”, but when the computer boots up, I can see the installer running in the processes list, but it seems unable to install the software… I know we could use the portable version instead, but I was wondering if there was a way for us to use our regular installation method.

We did our tests with the following executable: Natron-2.3.11-Windows-x86_64bit-setup.exe.

Would you have any idea regarding this issue?

Thanks a lot!

Benoit

What’s wrong with the portable install?
The installer binaries use this: GitHub - NatronGitHub/qtifw: Qt Installer Framework for Natron
I do not know if there is an option to make it silent, but you can search in the code.
google search “qtifw silent” seems to indicate that qtifw is not made for this, so my advice would be to use the portable install, and install it exactly at the same place as the qtifw installer would install it (same directory structure).

Please report any success here

see also Chocolatey package maintainer appears AWOL; needs replacement & updated version · Issue #271 · NatronGitHub/Natron · GitHub

It seems that adding the argument “-script” followed by the path to a Java script handling interactions with the installer does the trick on a local installation. However, it does not entirely work using a startup script on Windows. I ended up using the portable version that I copy on each host at startup, and creating desktop and start menu shortcuts using GPOs. Thanks for your help!

1 Like

@benoat, can you please share you recipe for making desktop shortcuts? I could add this to the installation manual. I don’t know anything about GPO.

About running the installer non-interactively, here the documentation I followed: http://doc.qt.io/qtinstallerframework/noninteractive.html. I combined that resource with the example from the first answer of the following StackOverflow topic that gives an “almost-working” solution with Natron’s installer: installation - Silent install Qt run installer on ubuntu server - Stack Overflow. Basically you write a Qt script and you run the installer using the “–script \path\to\script.qs” argument.

But as I said earlier, this solution works well on a local host, but not when deploying Natron from a server onto remote hosts (at least, I could not make it work entirely).

In the end, I ended up creating a GPO with the following settings (I should mention that using GPOs is something I learned by myself, so my solution might not be approved by professionals! ^^’):

  • “Computer Configuration > Policies > Script > Startup” for which I wrote a batch-script file that uses “robocopy” to copy the content of the folder containing portable installation of Natron stored on our server to “PROGRAMFILES\INRIA\Natron-2.3.11”;
  • “Computer Configuration > Preferences > Windows Settings > Files” that copies the “opengl32.dll” from our server to “PROGRAMFILES\INRIA\Natron-2.3.11\bin”;
  • “User Configuration > Preferences > Windows Settings > Shortcuts” (twice) that creates a shortcut both on the desktop and in the start menu to run “PROGRAMFILES\INRIA\Natron-2.3.11\bin\Natron.exe” in “PROGRAMFILES\INRIA\Natron-2.3.11” using “PROGRAMFILES\INRIA\Natron-2.3.11\bin\Natron.exe” as icon.

This seems to do the trick.

Sorry to bring up the issue, but my answer can be useful to other people (

the file associated with the “–script” command should look like this:

function Controller() {
gui.clickButton(buttons.NextButton);

}

Controller.prototype.TargetDirectoryPageCallback = function()
{
gui.clickButton(buttons.NextButton);
}

Controller.prototype.ComponentSelectionPageCallback = function()
{
gui.clickButton(buttons.NextButton);
}

Controller.prototype.LicenseAgreementPageCallback = function()
{
var widget = gui.currentPageWidget();
widget.AcceptLicenseRadioButton.setChecked(true);
gui.clickButton(buttons.NextButton);
}

Controller.prototype.ComponentSelectionPageCallback = function()
{
gui.clickButton(buttons.NextButton);
}

Controller.prototype.StartMenuDirectoryPageCallback = function()
{
gui.clickButton(buttons.NextButton);
}

Controller.prototype.ReadyForInstallationPageCallback = function()
{
gui.clickButton(buttons.NextButton);
}

Controller.prototype.FinishedPageCallback = function()
{
gui.clickButton(buttons.FinishButton);
}

On the other hand the uninstall key is installed in HKCU, it would be preferable that it is installed in HKLM