Recent

Author Topic: Making a program customizable by end user  (Read 1292 times)

yo_mono

  • Newbie
  • Posts: 5
Making a program customizable by end user
« on: December 24, 2020, 06:40:44 am »
Hey there!

So.. I used the search button but I couldn't find something like I'm trying to do.
If there is any thread discussing this same subject, I apologize in advance.

In this opportunity I'm creating an installer that will be actually a wrapper for another installer.

This original installer has a very convenient set of command line modifiers that allow me to easily interact with it.

However, I'm trying to archieve two major goals:

1- Allowing the end user to configure this installer. This means: Changing the description, Icon, Name, etc.
2- Embed the original installer inside this one as seamlessly as possible.

I've done the second one before several times, but I actually precompiled my program with the original exe already embedded on it.
This case would be different because the end user will "compile" a final version of this program with his customizations and this second exe.

To be clear: My idea would be to create a "wizard" asking the user to provide an icon, description, the second exe, and maybe a few more things, and then create a new, final exe, using all this data.

How would be the proper way to get this?

Thank you all in advance!

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 1209
    • Burdjia
Re: Making a program customizable by end user
« Reply #1 on: December 29, 2020, 12:01:31 pm »
Not sure what's your question.

Do you know how to create an executable file?
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

jamie

  • Hero Member
  • *****
  • Posts: 6989
Re: Making a program customizable by end user
« Reply #2 on: December 29, 2020, 01:28:09 pm »
He's looking for a flexible installer that prompts the user for different ways of configuring the installation..

For example a simple install or complete install etc..

the "Inno Setup" should do that for him..
The only true wisdom is knowing you know nothing

Handoko

  • Hero Member
  • *****
  • Posts: 5458
  • My goal: build my own game engine using Lazarus
Re: Making a program customizable by end user
« Reply #3 on: December 29, 2020, 02:28:31 pm »
He said he was creating an installer that wraps to another installer.

Well, I think that is harder than creating an installer. I haven't tried but I believe I am able to create an installer. But a wrapper for another installer. That should require above average programming skills.

I don't think this discussion will get many useful answers.
« Last Edit: December 29, 2020, 02:30:18 pm by Handoko »

lainz

  • Hero Member
  • *****
  • Posts: 4725
  • Web, Desktop & Android developer
    • https://lainz.github.io/
Re: Making a program customizable by end user
« Reply #4 on: December 29, 2020, 04:48:02 pm »
Installerception!

I think is not that hard. You cau use pascalscript to customize the forms. Then include the user script and the exe in the bundle. You said that you know how to do that part...

Edit: what is the "user" for you, a programmer that can use the IDE, or another programmer that must not use the Lazarus IDE and only yours, or an end user that will make for any reason an installer of an installer  :D
« Last Edit: December 29, 2020, 04:54:59 pm by lainz »

Handoko

  • Hero Member
  • *****
  • Posts: 5458
  • My goal: build my own game engine using Lazarus
Re: Making a program customizable by end user
« Reply #5 on: December 29, 2020, 06:46:09 pm »
Writing an installer is relatively easy. The programmer need to know how to use some basic GUI components and file handling. When I wrote my programs for used by my sister and friends, I also wrote simple tools that help automatically copying the files to the proper locations and generate some config files. I do not consider those were installers but basically they are.

If the programmer then learn and add some features like file compression, setting registry and automatically installing some required libraries. Then that really is an installer.

But writing a 'wrapper'. That is a different thing. The OP didn't provide enough information about the installer. Do we send the data to it using command-line arguments, pipe, or customizing some files? Or modifying/injecting to the binary's resource table directly? The OP only said he managed to embed the installer, but how? Without clear information, not much we can help.

@yo_mono

We do not know your skill level? Are you new in using Lazarus? Here are some general advice, hope it helps:

Why do you want your program to wrap to the installer? You can write your own installer relatively easy using Lazarus.

If you haven't, you should learn these GUI components if you want to write your own installer: TButton/TBitButton, TLabel, TEdit, TCheckBox, TRadioButton, TImage, TStatusBar, TProgressBar, TSelectDirectoryDialog, TOpenDialog.

And learn this skills and modules/units: basic file handling, fcl-registry, TIniFile. Would be good if you also learn: file compression/decompression, getting hardware information, encryption/decryption.

If you have learned all the things marked green above, you are fully capable to write your own installer. Getting hardware information and encryption/decryption are needed if you want to add copy protection feature.

But if you want to write a wrapper, not sure but I guess you may also need to learn these: paramstr, piping, application resource, etc.

How would be the proper way to get this?

Don't think about the 'proper'.
But pick the one that is easiest to you.

To me programming is about fun, not rules as long as the result is working correctly unless you want to share the code or working in a team.

Happy New Year 2021
And happy coding!
« Last Edit: December 29, 2020, 07:23:50 pm by Handoko »

lainz

  • Hero Member
  • *****
  • Posts: 4725
  • Web, Desktop & Android developer
    • https://lainz.github.io/
Re: Making a program customizable by end user
« Reply #6 on: December 29, 2020, 07:47:36 pm »
Installer of installer is not that uncommon.

For example setup downloaders like in visual studio. A few mb app that download a full installer that downloads another installer for each feature to be added.

Installers that depend on third party plugins shared in installers... like vc redist or net framework.

 

TinyPortal © 2005-2018