Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#4508 closed defect (fixed)

The windows nightly installer/uninstaller is too slow

Reported by: casella Owned by: adeas31
Priority: high Milestone: 1.12.0
Component: Installation program Version:
Keywords: Cc:

Description

The process of updating a nightly build under Windows is painfully slow. On my pc, uninstalling an existing version and installing a new one takes over 20 minutes, involves a lot of HD work, and it's getting worse over time. As long as you have a decent bandwidth, this is now the bottleneck.

Once installed, OMC comprises 156.000 files in 16.500 folders, for an overall size of 5.1 GB. Half of the files (about 78.000) are inside lib/omlibrary, of which 42.000 are found in the various version of the Buildings library alone. That explains the worsening of the performance, as more and more open-source libraries were added to the library suite. As it is well-known, adding or removing files in Windows is a time-consuming operation, regardless of the size of the files, so most of the installation time is spent deleting and then rewriting the zillion files of those libraries.

I understand we could have an automated update process that only downloads the required new files from some server, but setting this up requires too much development time and I agree this makes no sense, given our priorities. If you want this feature, switch to Linux and use apt-get :)

For Windows, I would suggest to just add one option to the installer, to slash the install/unistall process, namely "Install all open-source Modelica libraries", true by default. If this is disabled, only install the MSL, all versions, and skip the other ones. I guess this could be implemented very quickly and slash installation time by about one half, as half of the files would no longer need to be copied or deleted.

Change History (9)

comment:1 follow-up: Changed 7 years ago by hkiel

Would it be even feasible to generate a list of all Libraries, so that you can select either all, none or specific libraries? I have 30 computers at uni to update, so time really matters to me.

|
|-O ModelicaStandardLibrary
|-O Conributed Libraries
  |-O Buildings 2.0.0
  |-O Building trunk
  |-O ThermoPower 3.1
  |-O ThermoSysPro 3.0
  |-O ThermoSysPro 3.1
  |-O WasteWater 2.1.0

comment:2 follow-up: Changed 7 years ago by casella

This is obviously a good idea, but I would suggest to first implement the all or nothing option, which should be very fast. If there is more time, we could add this further option.

For your installation at university, you may write a small program that takes the libraries you need from a usb stick and writes them to the appropriate place in the installation, once that (without the libraries) is complete. I guess you don't need more than that, I hope OMEdit builds the list of available libraries from what it finds on the library directory, not from some other configuration file.

comment:3 Changed 7 years ago by anonymous

Would it make sense to distribute the nightlies for Windows using a package manager like Chocolatey?
https://chocolatey.org/
It is like Brew/Homebrew for MacOS or apt-get for Debian.

comment:4 in reply to: ↑ 1 ; follow-up: Changed 7 years ago by adeas31

Replying to hkiel:

Would it be even feasible to generate a list of all Libraries, so that you can select either all, none or specific libraries? I have 30 computers at uni to update, so time really matters to me.

|
|-O ModelicaStandardLibrary
|-O Conributed Libraries
  |-O Buildings 2.0.0
  |-O Building trunk
  |-O ThermoPower 3.1
  |-O ThermoSysPro 3.0
  |-O ThermoSysPro 3.1
  |-O WasteWater 2.1.0

It is possible if we hard code all the libraries since NSIS generates such list based on sections and the sections are evaluated at the compile time.
Other option is to write a small script or batch file which can read the libraries and generate the section code dynamically.

comment:5 in reply to: ↑ 2 Changed 7 years ago by adeas31

Replying to casella:

This is obviously a good idea, but I would suggest to first implement the all or nothing option, which should be very fast. If there is more time, we could add this further option.

For your installation at university, you may write a small program that takes the libraries you need from a usb stick and writes them to the appropriate place in the installation, once that (without the libraries) is complete. I guess you don't need more than that, I hope OMEdit builds the list of available libraries from what it finds on the library directory, not from some other configuration file.

The all or nothing option for open-source libraries is implemented now 26028/installers.

comment:6 in reply to: ↑ 4 Changed 7 years ago by adeas31

  • Resolution set to fixed
  • Status changed from new to closed

Replying to adeas31:

Replying to hkiel:

Would it be even feasible to generate a list of all Libraries, so that you can select either all, none or specific libraries? I have 30 computers at uni to update, so time really matters to me.

|
|-O ModelicaStandardLibrary
|-O Conributed Libraries
  |-O Buildings 2.0.0
  |-O Building trunk
  |-O ThermoPower 3.1
  |-O ThermoSysPro 3.0
  |-O ThermoSysPro 3.1
  |-O WasteWater 2.1.0

It is possible if we hard code all the libraries since NSIS generates such list based on sections and the sections are evaluated at the compile time.
Other option is to write a small script or batch file which can read the libraries and generate the section code dynamically.

It is done now in 26036.

comment:7 Changed 7 years ago by ceraolo

I checked this. In installed v1.13.0-dev-85-gfe07041 (64-bit) for Win without system libraries

I see that Modelica trunk is missing
Was this excluded on purpose or it just was forgot?
If possible, I would appreciate to have Modelica trunk available even when system libraries are not installed.

comment:8 Changed 7 years ago by adeas31

It was excluded on purpose. The idea is to install as minimal as possible.
IMO Modelica trunk shouldn't be part of the default libraries.

comment:9 Changed 7 years ago by ceraolo

ok.
I see that having modelica trunk is very simple: I just copied the folder in OpenModelica/lib.
Very good.

Last edited 7 years ago by ceraolo (previous) (diff)
Note: See TracTickets for help on using tickets.