BlogAll Blog Posts | Next Post | Previous Post
Monday, October 23, 2023
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.
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.
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.
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.
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.
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).
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.
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.
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:
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.
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.
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:
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.
This blog post has received 29 comments.
All Blog Posts | Next Post | Previous Post