Blog

All Blog Posts  |  Next Post  |  Previous Post

Reimagining our installers. A quick tour of TMS Smart Setup

Monday, October 23, 2023

Introduction

Installers get little recognition. You don't buy a product to use the installers: you want the product, and the installer is just a way to get and use the product. 

At TMS, we often fail to give them recognition too. Most of our development time is focused on improving our products, and as long as the installers work, we don't touch them that much. We primarily care about having the best products; the installers get a back seat. And yet, installers are a critical part of the whole. If an installer doesn't work or requires too much effort, it frustrates our users. They can take a disproportionate amount of our support time if they don't work as expected. And as simple as they look on the surface, they contain complex and difficult code inside, which, after more than 20 years of development and adding particular cases to support specific machine configurations, can get hard to maintain.

Our installers work and get the job done daily for thousands of customers, but we are aware that many things could be better. On its own, no issue is too big. But put them all together, and they make the experience much worse than it should be. So, about a year ago, we joined efforts among developers in all tms products to reimagine how we could make setups better if we started from scratch. This led to what we are announcing today: TMS Smart Setup. 

TMS Smart Setup is our next generation of installers for TMS products. We are starting a beta soon, including TMS VCL UI Pack, TMS BIZ, and TMS FlexCel. Other products should be following shortly after that. We are really interested in knowing how you feel about them, and your feedback will help us make them even better.

So, how are exactly those new installers, and what do they offer over the old ones? Below, we are going to try to answer that.


There is one tool to get all products and another to install them.

With our current installers, if you want to install all TMS products (and there are a lot of them), you need to manually download all the setups from our webpage, and then manually run each one of them pressing "Next->Next->...->Next->Finish until your mouse button wears off. And repeat this every time a new version of a product is released.

TMS Software Delphi  Components

With TMS Smart Setup, we provide the tms.exe command line tool. With it you can call download all products in a single step. Then you call "tms build", and you can go grab a coffee while all the products build and install in parallel.

TMS Software Delphi  Components


Smart Setup is fast. 

Smart Setup can download and build all products, platforms and IDEs in parallel. There is no need to wait for TMS VCL UI Pack to finish installing before installing TMS Aurelius, nor to wait until TMS FlexCel for Win32 has been built to start installing FlexCel for Win64. They all can be installed simultaneously, and you can control how many parallel tasks you prefer. Many modern development machines have plenty of cores, it would be a sin to have them all idling while a single one does all the work.

TMS Software Delphi  Components

Image: tms.exe building TMS BIZ  + TMS FlexCel at the same time in all platforms. Let those cores work!


Smart Setup is smart.

When you call "tms update", it will only download the products that were modified since the last time you called it. After that, it will only compile the products that need compiling, either because they were modified or because they depend in a product that was modified. 


There is no need for admin rights.

We've designed TMS Smart Setup to work with your user permissions, so you can run it in a machine where you are not the admin. This also improves the security for the full solution.


Fully scriptable.

Smart Setup is a simple command-line tool which you can call from a batch file, from a continuous integration server, or from wherever you want. There is no need to have a user click "NEXT" for it to work. We have plans to offer GUI interfaces in the future, but they will just call the command line tool under the hood.


Dependency management.

Some TMS tools depend on others to work. For example, the VCL Excel Bridge requires both VCL UI Pack and FlexCel to be installed first. And if you install a new version of VCL UI Pack or FlexCel, even if the Bridge didn't change, you need to remember to reinstall the Bridge again. Something similar happens with many TMS BIZ and FNC products.

It is a lot of work to do it manually, and there should be a better way. So that's why Smart Setup will automatically take care of the dependencies in your products, and make sure that if there is a newer version of FlexCel, the bridges will be rebuilt too.


Easy to configure.

You can see and edit all the configuration options in a simple YAML file. You can set configurations that apply to all the products (for example, you can specify that you don't want to build debug DCUs), and you can override the configurations for specific products (so you can specify that a specific product does have debug DCUs).

TMS Software Delphi  Components

Currently this is the only way to configure it, but we plan to provide a GUI tool for easier configuration in the future. In any case, you can always directly edit the file when something is not working.


Supports Lazarus and works in Windows, Linux and macOS.

Another reason we started TMS Smart Setup is that our current setup.exe are not a good solution for our Lazarus users, especially when installing in Linux or macOS. Now you can install for Lazarus in Linux as easily as you can install for Delphi in Windows.


Allows to install in an alternate Registry Key.

When using the /r parameter for starting the Delphi IDE, you can specify a different environment for the components. Now with Smart Setup, you can install one set of components in one registry key and a different set in another.


Works while Rad Studio is open.

Our current installers require Rad Studio to be closed while they are installing. When installing many products in many Delphi versions and platforms, this can be a lot of time where you have to remember not to launch Rad Studio while the installers are working. With Smart Setup, you can keep working while the products install, and you only have to remember to restart Rad Studio when it finishes. 

Of course, you should try not to use the products you are installing in Delphi while they are being installed, as the dcus will be a mix of old and new. But if you use them and something does fail, you can just run tms smart setup again and it will only reinstall what failed. No more worrying about not opening Rad Studio while the products are installed.

TMS Software Delphi  Components


Resilient.

When there is an error installing some product for some platform, Smart Setup will keep on going and install everything it can. In the screenshot below, it failed to install FlexCel for Delphi 12 and Linux64, because my Delphi 12 didn't have the Linux packages. If I didn't need Linux right now, I can ignore the error and just work with the platforms that installed.

TMS Software Delphi  Components

If I fix Delphi by connecting it to a Linux machine and downloading the SDKs, I can just run "tms build" again, and it will only install Linux, since it is the only one broken:

TMS Software Delphi  Components

Next time your antivirus causes a build to fail, or the cat pulls the cord while you are installing, you can just restart the build, and it will keep on going from where it was. No need to restart everything again.

TMS Software Delphi  Components

Image: Our tester Misha hard at work cat-testing TMS Smart Setup.


Simple and complete uninstall.

To remove a package, you can just remove the folder where it was installed and re-run the build. It will make sure to remove the product from the machine so what you have installed is always up to date with what you have in your hard disk: Smart Setup will try its best to remove the most it can; if there are errors uninstalling, it will keep going and try to uninstall everything that is possible.


Automatically skips platforms you don't have in your machine.

If your Delphi isn't configured to compile for a platform, Smart Setup won't try to install for it. It will notify you, but it won't be considered an error.

TMS Software Delphi  Components


Makes it simpler to hotfix bugs or modify a component.

All of our products come with full source code, as it should be. But with the old installers, if you found a bug or wanted to manually modify a line of our code, you had to manually recompile the project after that for all the platforms you cared about. Now with Smart Setup, you can edit the source code, run "tms build" again, and it will recompile everything that needs to be recompiled.


Built by the whole tms team, for all tms products.

One installer to rule them all. Now whenever a bug is fixed in the installer process for any product, it will apply to all of our products instantly, and even retroactively to older products. All the experience gained developing the installer for one product will automatically benefit all the others.


Start Smart Now!

We think the new installers are a big step forward over the old ones. We are quite excited about them and hope you will be too. Click the link today for more information and download links:


Get started with TMS Smart Setup now!


Also, here is the replay of the webinar where we introduced Smart Setup:


Last but not least: our Support Center has a new category for TMS Smart Setup, so feel free to post your ideas, bug reports, suggestions, anything you would like to comment.



Adrian Gallero




This blog post has received 29 comments.


1. Monday, October 23, 2023 at 11:28:10 PM

Wow, impressive work.

Pelletier Martin


2. Tuesday, October 24, 2023 at 12:04:29 AM

Sounds great, and cures occasional headaches!

Mathews Chris


3. Tuesday, October 24, 2023 at 12:23:07 AM

good news :)

DERNEGI CANSUYU


4. Tuesday, October 24, 2023 at 6:57:44 AM

Great, just please leave the option "just download the files" - as it is now.
I use another component, which some time ago got such a "smart" installer, which installs components in Lazarus by itself. And in my case it only complicated the installation process - I use Lazarus trunk version, which that installer can''t cope with, so I had to specially install another version of lazarus and for the time of updating the component you have to change directories.
In addition, I do not install all packages - in the case of your components, *DE packages cause problems when rebuilding lazarus (due to the use of the trunk version I do it often) so I do not install them.

Pawel Dmitruk


5. Tuesday, October 24, 2023 at 10:06:10 AM

You will get all options:
"tms update -nocompile" will just download the files, not compile them
"tms build" will compile and register, without downloading the files (this might be needed if you don''t have for example internet access)

In any case, due to the way smart setup works, if you just do a "tms update" (which will download and compile), it would just fail to compile, but it would still download the files.
We''ve been dealing with install problems for thousands of users for more than 20 years (and we''ve seen things you wouldn''t believe :). tms smart setup 1.0 will not be perfect, but it will be good out of the box.

and btw, FlexCel works only in Lazarus trunk, so we are testing the Lazarus install there. And we believe we as smart as possible but no smarter, so we always try to use "official" things where available. This means we call msbuild in delphi (instead of calling dcc directly), and in Lazarus we basically just call Lazbuild. No matter if trunk or stable, the lazbuild of trunk should be able to install in the trunk ide, and the lazbuild from stable should be able to install in stable. If they don''t then a bigger thing is broken.

Adrian Gallero


6. Wednesday, October 25, 2023 at 3:04:14 AM

can we start using even beta... FNC latest updates (2023 -10-23 ) full error.. :(

DERNEGI CANSUYU


7. Wednesday, October 25, 2023 at 3:17:19 AM

Sorry to hear this. I hope the new ones will be indeed better, but the FNC Pack is going into the beta later. We are starting with FlexCel, Biz and UI Pack. Today we got FNC Core compiling with smart setup, so hopefully it won''t take that long.
In the meantime, just go to https://support.tmssoftware.com/c/fnc/tms-fnc-ui-pack/27 and describe what happened, they should be able to help.

Adrian Gallero


8. Thursday, October 26, 2023 at 3:09:01 PM

Hi

I was unable to follow the webinair due to a longer than expected meeting.
Will there be a video link?

Olivier Dehorter


9. Thursday, October 26, 2023 at 3:23:14 PM

Yes, we work on preparing the recording to make it available for replay.

Bruno Fierens


10. Thursday, October 26, 2023 at 3:33:07 PM

I liked one of the last remarks in the installation log:
- Skipped Delphi 12. We can''t locate Delphi 12.

Everything went smooth with the new smart setup program!
I missed the webinar but when will all the other products be available for this smart setup?
Apart from the VCL UI and Biz products I see no other products like the FNC family.


van Heuven Rob


11. Thursday, October 26, 2023 at 3:46:33 PM

We work on adding support for other products. This works comes in addition to all other workload, so be patient till we did this work.

Bruno Fierens


12. Wednesday, November 1, 2023 at 10:19:53 AM

I am a TMS AllAccess user.
I really appreciate that you update your components very often and with high quality, but:
Currently, I waste a lot of time with numerous installations of individual components. Including subsequent tuning of the system.
Until now I used TMSSubscriptionManager 2.X (current)
Duplicate registry paths seem to cause the most problems. This causes errors like: "dcc .." "param. too big" or "size over 32000 b"
I am looking forward to your new "Smart Setup" system, which will be very useful for me.
I''m about to reinstall Win11 completely on a new drive. Mainly because of Delphi Tokyo and TMS AllAccess.
Therefore I hope to be able to use "Smart Setup" as soon as possible.
I''m looking forward to the new tool and I keep my fingers crossed for its successful completion
Miro

Bal? Miroslav


13. Wednesday, November 1, 2023 at 10:59:56 AM

I think you are going to love Smart Setup :)

> Duplicate registry paths seem to cause the most problems. This causes errors like: "dcc .." "param. too big" or "size over 32000 b"

This is normally not caused by duplicate path, but if you have all access, there are just too many products to registered, and they can push the command ilne over 32k (msbuild limit). The good news is that Smart Setup will never get this error, because it doesn''t pass the Library path to msbuild. It should also help with duplicated registry entries if you have it, as we plan to include a tool to clean them. (not yet in the beta)

> I''''m about to reinstall Win11 completely on a new drive. Mainly because of Delphi Tokyo and TMS AllAccess.

You can try Smart Setup today with the products that are supported (VCL Pack, tms biz and FlexCel). In fact, that''s what I would personally do. While Smart Setup is in beta, the products it installs are the same production products as you get with the Setups.exe. So, if they install successfully, they are fine, no problem that Smart Setup is in Beta. And honestly, Smart Setup is really solid right now. We are doing a beta because we want everyone to test it before we announce an official release, but we''ve been using it ourselves for months here without issues.

You can get the beta from here: https://support.tmssoftware.com/t/tms-smart-setup-beta-available/21723

Adrian Gallero


14. Wednesday, November 1, 2023 at 11:28:50 AM

Please remember to test it with RAD Studio Community Edition too.

Swart Johan


15. Wednesday, November 1, 2023 at 11:47:18 AM

Sadly it is not going to work right now with Community edition, because the Community edition doesn''t include command line compilers (unless they changed it lately? I''ve lost track with so many "now we include them" and "now we don''t" from embarcadero).

Today, you will need to have working command line compilers to use Smart Setup. It is in our plans to include support for Precompiled dcus for Community edition users, but we haven''t had the time to look at that yet. We''ll probably look at it when we look at trials, which aren''t supported either right now, and are also binary distributions.

In any case, thanks for the remainder, while as said it is planned, we hadn''t this added in our issue tracker. Now it is.

Adrian Gallero


16. Friday, November 3, 2023 at 4:12:03 PM

I am All-Access user.
Just successfully installed:
TMS VCL UI Pack 13.0.3.0, TMS BIZ Core Library, TMS Aurelius, TMS Sparkle, TMS XData, TMS Logging, TMS RemoteDB, TMS Sphinx, TMS FlexCel Studio for VCL and FMX, TMS Echo.
What next?
Should I install the other components via "Subscription Manager 2.2"?
And yes, I love Smart Setup :)



Bal? Miroslav


17. Friday, November 3, 2023 at 4:33:27 PM

Hi Miroslav, we love it too! :-)
Yes, for now, all other products should be installed using the existing Subscription Manager.

Wagner Landgraf


18. Sunday, November 5, 2023 at 8:31:59 PM

Hi TMS team, thank you for your reply.
How about the demo files please?
I don''t see them unzipped.
I mean the contents in the library: "C:\Users\..\AppData\Local\tmssoftware\registered\.." which were available during the "classic" installation

Bal? Miroslav


19. Sunday, November 5, 2023 at 9:26:09 PM

Hi,
It depends in the products for the moment. FlexCel and TMS VCL UI Pack should come with demos (but they are not in appdata, they are in the same folder under products as the rest of the product is). One design goal for smart setup is to have everything in one place, not scattered in places like appdata(. This all being said, we are still evaluating what to do with the demos, that''s why biz doesn''t currently include them. They might be in github or other ideas.

Adrian Gallero


20. Monday, November 6, 2023 at 10:11:54 AM

Hi Adrian
1. Demo examples should of course be separated from the Installation/Setup. Because each new reinstallation deletes not only the Demo resources, but also the tested projects and their exe files. This is definitely not pleasant.
2. GitHub, or another source with a zip archive, is a good choice for demo examples
3. Now practically: when I installed say "tms.biz.xdata" using Smart Setup, how do I get the actual demo examples? I can''t use Setup (xdata) again though. I need a separate installer, or a compressed archive for those examples themselves

Bal? Miroslav


21. Monday, November 6, 2023 at 11:02:19 AM

Thanks for the insightful comments, be assured that they will be added to the already big discussion we are having right (for a while now) in github about how to handle the demos. As said, this is not defined yet, there is a lot to consider, and we are focusing now in the installer part, which we want to be awesome and 100% solid before focusing in the demos. But in the meantime, we are leaving the discussion open here, and of course more than welcome ideas from our users. Going a little more in detail about the points:

1. I hadn''t thought about that, and it is interesting. But I am not 100% sure I agree in the general case. The issue being, at least for me, I see demos as a part of the product: they should be installed when you install the product (so you don''t get a second-rate experience), and they should also be uninstalled when you uninstall it because you didn''t like it. We disagree a lot in things in the team developing smart setup (and that''s the way you develop, you discuss and arrive at the best solution for everyone), but one thing I believe we all agree on is that uninstall should uninstall, period. Remove completely the app, as if you had never installed it, not leave stuff all over your hard disk that will never ever again be deleted. It is a little the distinction between installing an app in Windows (where you, as a setup writer *are* required to leave stuff all the hard disk "in case the user needs it again", and something like iOS, where you can safely play, install, and uninstall without worrying. We do think demos are going to be separated (if you want to), but by default we need to ship them for many customers that won''t know better. So an idea is to have the possibility to do some magic in the command line to install demos, demos+code or code alone as you prefer. As said, this is all being discussed right now, so I can''t tell you what the final decision will be. One thing I can say though is that if they are installed when you do tms install, they will be uninstalled when you do tms uninstall, or when you get a new version. For you as a user, the solution is simple: copy those demos somewhere else to play with them, so we don''t mess with them anymore. Another thing that is not negotiable is that we won''t be using Appdata or some other hidden Windows folder. That''s another thing I personally hate about Windows installers, how they spread their stuff all over the hard disk. You get a saying of "where to install" the app/component, but then a lot of stuff just goes to some folders you don''t have control over. And what''s worse, sometimes those folders are in roaming profiles or onedrive or whatever, so you end up uploading them somewhere and having them downloaded to your profile even long after you stopped using the product.

2. Yes, github is most likely happening. Myself, I already have all my demos there: https://github.com/tmssoftware/TMS-FlexCel.VCL-demos and I think most others will follow. But again, not right now, we are focusing in the core install experience, and demos are something to discuss in the meanwhile, but focus later.

3. Yes, we should provide demos for xdata, and right now this is something we should address. I am not sure if wagner has them somewhere else, he should be able to help. But once again, the reason for this is just that we are focused on the core experience now, and demos need more thinking, and we will be tacking them in the future.

Adrian Gallero


22. Monday, November 6, 2023 at 12:36:58 PM

ad 3:because it is a significantly shorter text:)
The problem is that except of Flexcel and VCL UI Pack, there are currently no demos available for the other components if we want to use Smart Setup
ad 1: For me, Demo examples in Setup.exe are not an ideal solution.
Demo examples are very useful. But it''s not exactly easy with them. In a few years I have had several incidents. That''s why I think the Demo examples are worth discussing in detail.
Some issues or topics:
- there are "thousands" of Demo projects.. and that''s good
- the user also needs to "try" them in the form of an exe. Since there are not a few of them, the compilation will take a lot of time,
- "hundreds" of demo projects are potential candidates for use (also retrospectively), it is a pity not to have them. But you don''t count on them in the first place, so you don''t want to copy them every time. In addition, you do not know if they are affected by the reinstallation. Therefore, copying tens or hundreds of demo projects every time is not effective. You don''t even know how many of them you currently have compiled.
- only a few demo projects are interesting for you, of course everyone copies them somewhere in the user''s work area and experiments with them there. But over time, you may need to return to the original. But what if it is deleted by a new installation? If you recompile it, you have no idea if that project is really your source. Also forget about the important check using the date of the exe file.
- not all examples are perfect. (The most common problems a/ the icon for the project is missing and therefore compilation does not work b/ the data is in BDE, which many of us have not installed for years, for example SQLite c/ connection for data would help.., a relative path to the exe would help here, or directly a path to some fixed "Data example" space). Similar reasons are why you need to devote a lot of time to a successful compilation. Nevertheless, the project may not be completely current for you. So you leave it in its original place. And you''re out of luck if you ever want to come back...
- The user does not even know which of the many demos were updated during the new installation. It can probably be assumed that only a negligible percentage goes. Therefore, I would not consider it absolutely necessary to reinstall the Demo examples.
- It would be very helpful to divide the Demo projects into categories: a/old, b/current, or potentially current and c/completely new, which illustrate the latest features of the reinstallation.
I know it would be very difficult.
I appreciate your work very much. I can well imagine how much effort you have to spend on that many components. It''s definitely not a criticism, I''m just trying to give my point of view.

Bal? Miroslav


23. Monday, November 6, 2023 at 12:45:24 PM

I can''t fix my previous answer, so edit: For example, SQLite can be a replacement for BDE or ADO. But even data without a database, directly from the disk, works well. BTW: Microsofts ADO is deprecated - UNDEPRECATED :)

Bal? Miroslav


24. Monday, November 6, 2023 at 1:10:31 PM

Miroslav, I believe this is getting too technical and long, I suggest this conversation to be continued (restarted?) at our Support Center.

Wagner Landgraf


25. Monday, November 6, 2023 at 2:39:45 PM

Yes, you''re right. I fully accept

Bal? Miroslav


26. Wednesday, November 8, 2023 at 8:38:09 PM

Chance to use the beta to install tms library on a clean RS 12 installation?

Mathews Chris


27. Wednesday, November 8, 2023 at 9:17:58 PM

Lots of chances :) Smart setup has been working with D12 for a while. Some users noticed it in the webinar https://www.youtube.com/watch?v=FPRwszLZAco (for example at 15:18)

Adrian Gallero


28. Thursday, November 16, 2023 at 2:16:57 PM

This is an absolutely brilliant system - I wish all installers worked like this! It''s super fast and I can''t wait for the rest of the TMS products to be made available via the smart installer. Great work!

Barker Ian


29. Thursday, November 16, 2023 at 2:24:04 PM

Thank you for your kind words, Ian. Really appreciated! I''m glad you liked it. We are managing to get more TMS products into it as fast as we can.

Wagner Landgraf




Add a new comment

You will receive a confirmation mail with a link to validate your comment, please use a valid email address.
All fields are required.



All Blog Posts  |  Next Post  |  Previous Post