/build/static/layout/Breadcrumb_cap_w.png
07/18/2019 276 views

I am writing a program to do a silent install, but one of the selection screens can change depending on which versions of Matlab are installed. The selection screen can be seen below.


I need it to select every version that is available, but the list is dependent on what is installed on the users machine. I was wondering if there was a way just to have the setup.iss file click the select all button?

0 Comments   [ + ] Show comments

Comments


All Answers

0
Answered 07/18/2019 by: SMal.tmcc
Red Belt

  • I have the .iss file already created. The problem is if I have different versions of Matlab's installed, the program will crash and not install.
    • The 5 shown can vary from machine to machine so the select all is not always the same?

      can you post the portion of the iss file
    • is it possible to remove all the older versions first?
  • Whoa, that sucks. In regards to the ISS, you will need to create a ISS file for every permutation of the install. There is no other way around this if you want to install the selected/detected MatLabs on the fly, if course you will need some whizzy scripting to choose the correct ISS file too.

    I think your best plan is to get MatLab on the computers to a know state. This will make life much easier.

    Or another way is, if you know your computers have MatLab 2019 and 2016b, then just install for those - its a bit of a pants solution tough.
    • If you have Kace you can create a smart label for each version and a .iss for each version and use the labels to push the install with the corresponding iss for each version separately.
    • Is there no way to trick it into clicking the select all button by having a Result=3 (or whatever number the select all button would be), have it think it goes to a new page, and then have a Result=1 to have it go to the next screen?
      • You would have to use something like AutoIT to wrap the install in and have it click the buttons for you.
0

I have an idea.

You could try and make a ISS for each of the MatLabs, then just install using the required ISS for the MatLab version found (script whizz required for this bit). Not sure if the installer will be allowed to run twice, guess you will to find that out.

And I dont know what will happen to the ISS file, if two MatLabs are found for example - as it might add extra data to the ISS and break the silent install - guess you just have to try.

Answered 07/20/2019 by: rileyz
Red Belt

  • I bet you got the idea from my reply to your reply above :)

    Whether he has Kace or not I think this is the best way to proceed BTC is a addin module that will work with matlab as well as other programs, it is designed to work with all the matlab versions so it scans for installed versions when you start the installer. You can create a silent install per version and use a batch file to run "If-Exist-Then" logic on the file system to tell what versions are on that computer and let the batch file have the power to run for all versions.

    If Exist c:\the\matlab2014\directory goto run2014 else goto no2014
    :run2014
    run installer for 2014 silently
    :no2014

    If Exist c:\the\matlab2015\directory goto run2015 else goto no2015
    :run2015
    run installer for 2015 silently
    :no2015

    If Exist c:\the\matlab2016\directory goto run2016 else goto no2016
    :run2016
    run installer for 2016 silently
    :no2016

    If Exist c:\the\matlab2017\directory goto run2017 else goto no2017
    :run2017
    run installer for 2017 silently
    :no2017

    If Exist c:\the\matlab2018\directory goto run2018 else goto no2018
    :run2018
    run installer for 2018 silently
    :no2018
0

The best way of dealing with brain-dead vendors like this is to have *them* create the .ISS for you. More sensibly, ask them very nicely to create an MSI-driven installation instead of an InstallShield script-driven one. It would take less than 10 minutes for their packager to do.

Answered 07/22/2019 by: VBScab
Red Belt