Transcript for:
Inno Setup Tutorial

hey everyone it's Joe Lyons here from automator with isaia's and then uh John Allan from quick access pop-ups is going to walk us through we've had some requests on the Inno setup tool which is a really great tool if you want to have a GUI that's really friendly for the users that are installing your programs on where they're going to put their files and how they're going to customize you can do stuff so it's a very flexible well documented good Community tool and so we're going to walk through how to use the tool and it's been a while since John is actually configured it but um he's going to give us a little tutorial here so thank you Sean yeah my pleasure is I Joe um yes the story is also good to give you as developer the control on how the software will be installed which file will be in which folder uh which value in a linear file or things like that so it's good both for for the user because it's easy to install a software and for you because it's a safer installation when you use that tool compared to Distributing a portable software that you could put in a zip file but then you let the user do some changes eventually to your installation and it may not work at some at some point that's why when I was developing quick access pop-up at first it was a portable software but then just to make it safer to distribute on the way it was installed I started using Inno setup one of the few tools that are available for free and on our very popular with a good community community to to help you if you have questions for about the various options in the software so what I proposed to show you first I'll just share a little table of content here so Joe we could put this information in the video description so the the link to the the home page of you know setup the where you can download it and where you can get help and what will we will see is first a simple example just to get the basics then something that I would call intermediate where it gives you more things that you will probably need in starting your software and in the end we could just walk through the installation file for quick access pop-up where some more advanced things has been developed over the years I started using it I think maybe seven or eight years ago I do not use this tool every day because it's not something you need to use every day so there may be things that I don't know or just forgot so at some point depending on what you are your questions or needs we could go to the L file maybe just to find the answer or you could do some additional research after the video so are we going to start with the simple example yeah sure when you install quick when you install you know setup it install a program which is in fact an editor so I'll just start it that way here so you know setup compiler which is a text editor where you compile a script a text file that will control our your program will be installed and you have various example file and here the file that you used previously so we will just open the example one here there's a menu bar where you can create a new file open safe but this button here is the one you will use to compile your program so to create an executable file that will set up your program you have this button here that will run the script as it is here but I prefer you to compile it and then install testing it using the real compile file and a few other options that are maybe less that I don't don't use so at the basics first what you have to do is to set up your installation so to give some information like the application name in this example my program is version the default directory name so Auto PF I'm not sure what it is I think it's program files yes it's automatic program files so the program file folder under your C drive probably could be elsewhere and will it be this the 86 or the regular it will be decided automatically if you have this this is here a constant that will be replaced by the folder of your program files default group name group is a group of icons that will be displayed in your start menu okay so these are all groups so there will be a group for our program so that we have first as a setup uh just before that I defined a few variables so you can Define variable just to reuse this information later in your script and if you need to change it you will only have to change it once here it will be reflected elsewhere so my folder for my distribution files in in my old drive in a folder called distribution file that can can show you here so that's this folder here it contains a license text an executable file so a comp a compile program so you know setup will not compile your your program using ahk to exe you have to do it before you have to sign it before if you have if you want your program to be signed but this the signature could also be integrated inside you know setup but for now we just have a regular auto key script compiled or transformed to an exitable file an icon here which is a yellow star and a readme file okay so that's what so these are the files that are going to be then uh copied over to another location right so this is the the final product yeah they will be packed inside the setup file the setup executable and unpack if you wish and and place in the various folder where they need to be on the user's kind of system okay so that's this distribution file and my build directory is where I will output the result of our compile so I will just delete the one that we had before there is one running here let me just close this okay so that's where we'll be created the setup file that will be that I can send to the users who want to install the the program so the first one was read from this location and this is where you're gonna dump the setup file right exactly can you zoom in yeah okay there we go yes so here uh to create variable you use the Define keyword then the name of the variable there's no equal or anything like that you just follow it with the value that you want in the variable between double quotes yeah definitely cannot use an equal sign because it's being read below us in any file so it would class with that so so that's the setup section now after that you have the files section so that's where you define which files will be included in your setup program and you have to say in which folder it will it is so it is in my distribution file which is this folder here and the name of my file is my program.exe and the destination for this file when it will be installed on the user system will be in the application directory which is by default um the the C program files backslash my program backslash so you will see whatever I Define it whatever I defined as default their name yeah defined it here right okay okay that's the program five PDF is for program file automatic because there are two and one other two will be selected and it will be my program but when I uh refer to app in this instance I'm referring to that particular directory over there right yeah okay and the second file that will be installed in this basic example is the readme file in the same folder uh is reading me why I'm not sure it was there when I did it uh yeah but the file will don't I don't think the file will be maybe the file will be marked as read-only let's check that after the installation and then there's the icons the icons are the icons that appear inside the groups here so it's not it's not the icon of the file as we could think it's the icons that will be displayed in the start menu here all right review that in a second so the icon will be in the group the group is one of the section of the start menu you see as Joe I have the my start menu on the right side you will add it probably on the bottom left ear but it's the same same features so a group that will be named my program my program the name of the group is defined here and under that there will be the file my program exe as an icon that will be that will when you click the icon it will execute this program so let's so so instead of icons this is kind of like shortcuts that will show up on the start menu items yeah they said the word icons but it is not referring to icons themselves is actually the the shortcuts okay the only icon is the one that you see here right yeah the way they call it probably okay and so now that I have this script here I will just run it by clicking here the compile button and you will see that it will be very quick you see the status ear and then it's done it took one second point zero forty seven seconds and it's done so let's review this if we go in my build folder I have a file here called mysetup.exe that's the default name because I didn't set the name but we can set a name for the setup file it's better to do that but just for this example here is the default name and when we run it we'll we'll see the the interface of the setup program first it will ask you if you want to install the program and here you know you see my uh my yeah see that this is this is the window window this is a window uh checking for permissions right we cannot say that and if it is yellow it is because the software is not signed so there's no certificate so you have to be sure that you take it from a safe Source if it's blue it's a file that has been signed so it's safer to install this file when they are assigned with the certificate so after you approve you give the right to install the program so you have here the interface of the installer first the user that's the choice of where the program will be installed so um so even though so okay so even though we set it up in the in the setup folder like in the setup file it doesn't mean that it's going to be installed there it's just that that's what it's going to show up first that's the default you can actually change it to whatever you want yeah all right okay so that we can change it because some users will have this on their their B drive or their yeah or they can have in different different places where they have the choice to do it so next they will have to the name of the yeah um that's on the start menu folder as a start menu so that's the name of the the group that we will have in this program then there's a summary but I just realized that this software oh yeah there was no license here okay there there will be like the second example there will be a license approval that will be requested it's not the case with this simple example so that's all what we have to the user will have to do just to select this folder to confirm that he wants to install it that way and click install and it will be installed in a few seconds and at the end there's a confirmation where the user can view the readme file I think that's the point if you don't have it flagged as a readme file this particular window might not show up right it will not tell you to work or if you don't give the readme file path it will not it will not show up in there okay and when you click finish you if we have the option it will be open so it's open in the default text file reader so that's this example and now this software has been installed so you see it here in the Recently Added section you see my programs or if we go under m you will see the group here my program with this icon with one icon that you are and when I started it will display hello world which is probably the first application you developed exactly okay so that's that's that simple for the basics so what we can and if we just go to my checklist here in this thing simple example we've seen that we have constants so values that we can use and there's a help file and reference documentation with for all the the the the constant that we can use there's defined where you can create variables and we've seen three sections set up files and icons to Define what will be installed in which way right in the second example we'll see a little more features so let's follow this one and opened the example two so um what's so we have here this the some of the basic information we had before there's also uh something I will just show here that if you add you want you can use in the very um environmental variable with this function here of course when you do that you have to have something set up in your environment which is not the case for this demonstration but just to show you that you can you could retrieve some information from the environment um what else I'm defining here the application version as to be used in the file names we also with underscores and my application version in the text format if you wish with v and Dot so it can be used in different places in these two formats I added the application URL and the application executable name so the name of the program right so this is something that you didn't do the last time so that's the reason why I chose that right okay and so we can use this value here in the setup so my application version application version name which is the name and the version the publisher URL which is your url that you could put here and some other things were already there before here the the output directory so where it will be saved and the output base file name so the file name of the setup file so it will be my program Dash the version number Dash setup dot exe that will be added when it will be created I mentioned here a setup icon file so the star icon that we will see in the installer and the license file that will be presented to the user that you will have to approve before installing the software so it's a file all you have to do is to put this file in your distribution file here so this short file will be included in the installer uh there's a compression algorithm here yeah I just used it so never add issue with that and solid compression not sure what it is but I just use it as it is suggested by I you know setup then we have here the same two files and now I added a task here so a task is an action that you want to give the user the choice to execute or not so there will be a step in the installation where the user will be will have the choice to check or uncheck various tasks that you can Define or the one that I defined here is to create a start menu folder so that's it we did it in the first example but the user didn't have the choice there was a oh right yeah it was created you couldn't actually uh decide whether or not to do that yeah you will be able to decide we have a few more icons so here my program foreign -2 um there will be a link to the website in my in my start menu and and uninstall option also in this menu I create a directory under common app data which is where if you you know that your wind your system could have multiple users each user have their own files and their app data user app that yeah but there's also a common app data folder where an application can store information that will be available for all users on this of this system so that's where I'm creating a folder you could also create a folder in users folders uh if you if you need it but there's also things that you can let to your application to do the to do it so there are you know there are things that can be done by the installer and there are things that can be done by your application itself when it's it gets more information about what the user wants or what is the specification of the of the system but here it will create this and in this this folder we will create an ini file and here we Define what will be the content of one or more in a file so in the any file that will be named my program folder okay under common application data I can show you this folder that is this folder your name program data that is in Windows 10 you have this program remember another in other words and yeah so here there will be a folder named my program that will be added after an installation and it will contain a mini file that will be my program.ini and in the global section it will include a key that is named language code that could be English or French or ES okay or Spanish depending on which language will be selected by the user when he does the installation okay so I set up tree language we will see what quick access pop up there's our 10 languages that are and it will also change the interface of the installer when you select a language here so we'll drive English first then we can retry again with the Spanish version run is a section that will determine what is what will be executed after the installation so after the installation the user will be able to start the program and uh also to open our readme file we've seen the readme file in the first it was it was there by default but here we are adding two other options the last one being to send some money to a freeware developer like me or like you so there's a link to PayPal it's an option that you can give the user when it does installation here we Define the languages so the three languages that we used here were parameters so saying that this command this line here will be executed only if the user selected the language English or French or Spanish these languages are defined here so we have the name of the language and the message file which is the the the the file containing the the language the text uh for this language so there's one by default which is English and we can also have other file ISL files that are under the compiler uh data folder all right okay and finally uh here for my PayPal link here I have a disk a description which is the text that will appear in the in the installer that can also be translated but to to ask these texts and this text translated we have to use what is called a custom language entry which is uh the anglish or the original text help me pay expenses for making this app and then I can have the translation for French and the translation for Spanish and I hope it's okay because I just get got it yeah this one is good yeah oh it may not be one no no no but this one's good same thing to save on the second line we'll see that it can be paid with PayPal or credit cards so it's also translated I would have thought that these translations would have been in the ISL file no because uh it's not everybody that will want to say PayPal or credit card so it's something that is more specific to my situation here so it's your installation so right now but but oh sorry so the French dot ISL is not a file that you created yourself no it exists you download it there are hundreds of language files I understand so those are approved some are validated by the developers or by the community some other are for approval if you wish but you can still use them they may just be not as perfect as the order so do you yeah I understand what you mean now all the basic is there here is just what what is called customization that's right thanks for you so so those ISL are just for the uh interface of the setup right yeah or the common language that you will find in the installer yeah right so we've seen all that so let's see how it will uh work but first I will just uninstall the first version the first program yeah or hit by installation date so that's the program that we installed at first so I to uninstall it because there is no uninstall menu item in the start menu right you have to go in my parameters in my settings here to uninstall it and it's done are you sure yes now it's done so we can start from for a fresh install using this file so I will compile it and if I go in my build folder this is my second installer that we just built it has the icon that we Define it has to name the setup file name that we defined with the version number right and now I can double click it to start it there's the approval screen and so the first thing now is The Language by default it says French probably because it detected that I have a French windows but you will probably see English or Spanish depending on your version of Windows so we'll do it in English first here is the license so I can review the license all right we actually just copies the text in there and how was that link created oh you just put it there okay it's just it's just a normal so there's a the link is uh here the link is only the fact that I mentioned this year uh-huh there we go okay it will be automatically processed because you give a license plow right so it's going to read that and put it in that window okay yeah so the user can refuse and just stop it will be able to install to click next he has to accept now we can click next you select the folder you select the name of the group startup folder and does he wants yes or no to create the startup folder here so you could uncheck that if you don't want the user don't want to have this in this menu and you want to create its own um link file or a shortcut so it is up to the user and finally it there's a summary and now it will install the software you know this time we have there's more options right now we have we have the readme uh option that we had before launch my program that we added and help pay for my expenses so if the user clicks here it will also open the the URL that is going to ask for this paper so let's try with the three options here so we click finish so it opens the PayPal link it opened the readme text file and it launches the program which is what small in English there's something in my script that will show hello world in the language that you selected in the all right okay I got it and I'll just show you what what make this work so so let's try again just to first let's try to uninstall the software yep here but I don't like the scroll bar so under M there's my program here so in addition to the my program itself there's also the link to my website or Joe's website in this example and the uninstall icon so if I click uninstall it will ask me to confirm that I want to remove everything that has been installed by the software in fact it removes everything except the ini file and you could remove also the unified if you wish but me I prefer to what is user data not to remember okay better practice in my view at least for the kind of application I developed so I just only install so we can start again with the same file here not this one here under build so this installer file and now we will select the Spanish language so here we have the language around the the license is in Spanish I could have three version of the license file but I didn't so it's all in English ear accepto yeah exactly okay and okay next next the same options the only difference is the text that is in Spanish and of course you have a go back here this text has not been fascinated but it could be translated okay just a matter of a little more work and the summary and the installation and now I will just execute the program and you will see that the program is now yes now in Spanish right so how is it done what we have here in the ini file that is created we have here this variable that is read by the scripts file yeah uh I'll open it just so retrieve the uni file in the folder where the information language code was mentioned by default is English but if it is es for Spanish it will show this in French it will say bonjour and in English or by default it will say hello world and then display so that's the way you can have some communication of information from the installer to the program right by using any file you could also use the registry Windows which is three or any text file also that could be used to to so what we have here we have under the programs we have this folder here that contains the executable so it is under program files x86 in French here displayed in French the readme file the end the uninstaller under the the startup menu new dimari is startup menu so we have programs and here we have my program which contains the the treatment run the program to open Joe's website which is the one I entered in the file and to uninstall the program and it is written in Spanish because we selected yeah it's true and uh um so that's and finally in under program data where you have files that are available to all users of your system there's a my program folder with this ini file containing the language code that we created so that's are the various pieces that are working together to create this a little more uh flexible uh so we've seen whoops um that we can add more information in the setup we can create tasks to give the user the choice to do something or not we added two items to the startup menu created the directory in the file run where we offer to the user what to run at the end of the installation and we created languages and have constant message being translated for these awesome messages right so that's it um what we could do now is just take a look at a real life example which is the the quick access pop-up setup file unless you have questions before you go there we go into that well um for now I think the the main idea is really look simple right so it is very easy to follow up I did have the question can you create that file that you're opening right now this ISS file in any editor or it has to be in their own editor in any editor and you could launch the compilation from the batch file if you wish all right so all my setup is done using batch files that will call ah key to exe to compile the file that will call the signature of the file and when all the files are ready to call the compiler to to create the setup file so all this can be done from command lines or bash files or so you're not actually tied to that particular editor per se the only advantage of using it is the are the buttons that you have yeah and there's a few things that you could uh let me just open it here under Tools you can generate a guid that will be the unique identifier for your program something that you could or could also do elsewhere there's a lot of ways to create Goods but it's it's convenient to have this there you can configure your signature tool so giving it where is your certificate file I'm not sure if you're sharing your screen though oh excuse me foreign ear so a unique identifier for your file for your program and configure a signature uh location so where is this the certificate that will be used to sign your software so all this can also be used inside and then various commands are also available here to come out of calculation or just run your script without having to compile it okay but it's up to you and I think there's something included in vs code uh you know setup I've seen somewhere that there was something maybe I'm not sure if the vs code or visuals to do it this year I'm there's a various projects yeah exactly so some one of them or some of them include the you know setup uh features all right so okay so uh yes just to complete what we can see in the um in the the quick access pop-up example is that I'm using the registry command or section to create registry entries in Windows registry it is used in my case to create context menu entries and also to register the application in Windows so that you could do things like if the user quiz type quick access pop-up without giving the path it will be automatically found because it's been registered in the Windows application yeah without having no without having to use the path in addition to the pad if you register your application in Windows it will be found the file name without you see without the pad similar to using Pat if you wish all right and code which allows you to Define custom function in Pascal I don't know if you ever program in Pascal ever I don't know Joe you're older it's something I use I actually was signed up for a class for it uh in my junior college and then I I didn't finish it but yeah I did sign up oh that's one of the first structured language before that it was basic with Google things like that and it introduced the the notion of functions so I don't know where why they are using this language probably the preference of the developers and that's what is available to add custom features to um to the approach the installer program so that's the quick access pop-up example um so you were getting some things from the environment in this particular case I'm getting the the date the today's date in in the in a given format in fact I'm getting only the year because I want to write copyright from 2013 to this year and this year is can change over time and I don't have to think every January 1st to change this file I guess command um custom message that's the same thing we've seen set up here there's the app ID so I just replaced it with some of these but that's the good that will identify your program uniquely among every other registration program that would be installed in the world um what else architecture yeah you could actually go ahead and say my default is 64-bit user can also install 32-bit so there are parameters that we will see in the file section here where the file name will include 64 or 32 and it will be installed only if the flag 64-bit is present so it's a flag that will say to you know set up it's a flag that inner setup will discover by looking at the environment and if it is a 64-bit machine it will execute this line here and if it is a 32-bit machine it will execute the previous line so let's return at the beginning so only one of these two files will be installed on the system depending on the architecture of the system um what else okay there is History Section so language is the same thing we've seen but with some more languages some more files for example if you use SQL Lite in your program you will have to install two files the sqlite dll and sqlite eef and yeah yeah and there's one for 32 bits and one for 64. it's it's one of the thing that can cause nightmare support nightmare using say your database doesn't work or your application doesn't work but it's just because the user didn't install the correct SQL file uh for the this machine so all this is taken care automatically by using these flags here that will decide if it is installed in one version or the other I'm actually kind of surprised that you needed to kind of like give the the definition file because that is it seems you that you need it for qap right but yeah usually at least for QEP and I'm using an awesome the software it has to be there for for the the SQL component to be to be to work with your auto key script really yeah I I use I I use SQL but without the definition but it is the definition file is a list of the functions that you have available yeah but it has to match yeah it has to match the one that you have they have to be the same witness but right yeah and you have your intersection yeah exactly yeah with more languages but that's the only difference icons is quite the same and then you have the registry section so the first items are to register the application in Windows so in the software Microsoft Windows Korean version app pad here you will say that right application quick access pop-up for example is in this particular location right so it's equivalent to add your folder to the path variable but you don't have to go adding it there because it will be found here because it is available in this section of the registry and here is a or just something I added to make sure that the software was correctly removed when you uninstall the software I'm not sure [Music] I don't remember exactly why this was added and the remaining year section of the registry is to create a context menu entries for example if you right click here you have now quick access pop-up icon to say add this file to your quick access pop-up menu right that will automatically open quick access pop-up and add the program actually the document that you selected this is a very interesting thing and we do have a question on that but after the after we finish okay we'll do another one because this is a very interesting concept yeah so you define all these registry keys will create the the various icons that you could have in the context menu and there are different ones for example if I go to the desktop and I just left click on the desktop I will have the the show quick access pop-up menu right exactly um so back to the file and finally you have this code section where you create functions and the first one I use is uh I release very frequently new version of quick access pop-up which is good because I I added feature and the user received more features but user have to reinstall the application every time I release a version it can be once a month maybe at some point it was me even more frequent than that now I'm more quiet but some users say it's good to have updates but it's bad to have to click next next next next next next every time we have this next to click or so I try to reduce the the number of clicks so if the users the user already installed the software he already accepted the license and he already accepted to have the the task that created the group here so this function here is checking if the current page that is going to be opened is the license page or the select task page then if the software has already been installed so that's a command that I found on the The Forum of you know setup this says that there is a previous application or a previous version of your application already installed then it will return files uh that will or true where yeah it will return true so that it says that we will skip this page else it will return files so that's something that you can copy and paste from The Forum once you found that right and there's a few other things that I don't remember exactly why oh yeah this one is do I want to execute the um to install the context menu so there could be an option just for user that would not want to have this setup menu to be installed so that's the kind of thing and then it is Pascal language here it looks a little bit like uh yeah this is kind of like a mix of aroh hotkey and life but you need to have begin and and right there's only one command and you need to have the semicolon at the end of every level every single line yeah every line when there's a second line it's really annoying yeah no not this one yeah anyway so that's a another language to exactly but you can find examples on the website and I can just take a look at the yeah so I would probably bear I would probably infer that uh this program was written in Pascal probably I I assume yeah so there's the main and file and also here the setup preprocessor there's a lot of stuff there but that's where you will find the defined command that we use at the top here you're not sharing any more Sean yeah I'm not sure anymore you stop sharing yeah [Music] so here at the top of the script we use the Define command the help about these commands or these command or directive that starts with pound sign are defined so that's the home page of the documentation they are defined in the reprocessor help file but the main stuff is the main help file and here you have for example the sections or the setup section the file section with all the parameter that you can give and there's a lot of stuff you can have hours of fun trying yeah yeah but you don't need all this depending if unless you have very specific needs yeah John I'm not I'm not sure how familiar you are with auto hockey's built-in tool that does this but between the two you guys what would you say from everything that Jean just mentioned here you know like why would someone use this tool over the built-in stuff we have available in Auto hotkey for creating an install like what's some of the most really cool functionality that sets it apart well let me so before he chimes in with why you would need that or or why you would prefer that so there's a few things in add a hotkey for example your script um you can set register keys right but if you want to delete the application what is going to delete those register Keys later on right you would need another script that would actually uninstall so that's the reason why even in the inner setup you have these two separate things the installer and the installer actually creates an uninstaller so you need two things another hotkey you would have to do that yourself you would have to not only that's if you say if you take a look at when the on installer was created right next to it there was an uninstaller.pat which is kind of like a data file that contains all the commands that the only stalker has to run right so kind of so all of that you would have to manually do yourself including the GUI which is like this step-by-step process and of course that if you don't want to deal with all that you can just write one file that would take care of all of that that's that's the that's what I'm understanding from it because uh what you mentioned like okay I want to install things in the registry and I want to install this file in this location or I want to use this icon instead of that one all of that as you mentioned prior you can do it in Arrow hotkey but then you would have to do it yourself right you you have to manually do that and it would take a little bit longer than just creating one setup initialization file and you cannot control where the user will install your application if it is a ZIP file user could unzip your file under a protected folder for example many users try to unzip the portable version of quick access pop-up under the program files holder which is a protected folder so something running there cannot write inside this folder the programs there will write their in their data their Indie file or things like that in other locations other software that under directory for example under app data or things like that but the portable version of quick access pop-up will try to write the ini file in the same folder where it is yeah and if it is under the the administrator rights Drive the zero Drive is protected you cannot an application cannot write an ini file itself so there are things that you cannot control that the user will do and if you have a lot of users it can be a lot of support requests because something does not work and before you find out what's not working so it's good if you can prevent this by having a software that will really control the way your program is so what I've heard basically is you have a really well-defined template right it's already builts that yeah has already taken the code and when you give support that's that's it has a big value because you can assume that the software is installing the given in a specific last question to the user check this check this and it should be there right with a portable installation you're never sure what the user will well and that's the interesting thing my with my understanding about a hotkey I would say yeah definitely I can basically the reason why you cannot write on the program files folder is because it's restricted but if you run the script in administrator mode then you can that's one way or another instead of writing the ini file right next to the script always write it to the applications data folder which is always available for the documentation so again yeah it's not that it's impossible yeah right but when you write a portable application it is done to be portable so it is designed to be self-contained exactly and it's good for users who need that use user that needs to run your application from a USB key and use it on any right in that case right I understand but in that case I would just check on that if I check on that I was notified the the user hey I cannot run this folder just move it to another one but again yeah I do understand your point right you can do all this that's what that's what I was going to say but for a lot of these things you will search a lot because they are very active that's that's basically the 32-bit or 60 for a bit is easy because there's a variable that gives you that you have to know it but once you know it it's good but there's a lot more features exactly and and that's exactly the the point so you can do it in Arrow hotkey but that's a lot of work that you have to take care of and I think if one controller would do that for you that's it and I think it's more valuable to put your time in features of your software right instead of doing something that you will do once because because after it's installed foreign [Music] no no I do understand anything I would say yeah because someone else took care of that exactly I would say is the same as a lot of uh other situations don't reinvent the wheel if you don't have to right so if it is only to install a few files because you need an image file and you find install is fine and I'm using it also to install for example the images that will be used as buttons in my application because it's used also in the portable version but but uh yeah yeah I do understand and and that's what I would say I would close with that so the need for an installer is just basically something that you can do everything yourself without a hotkey but basically the installer takes care of a lot of headaches for you so instead of will actually recreating the wheel in this instance just go ahead and use it if you need to install multiple files in multiple locations and you just need to verify that they installed the installation process is always the same for everybody then instead of actually having your script deciding okay if it is Windows 895 I love to do this you know so yeah I do get the value on that yeah yeah that was really interesting it is it's pretty amazing tool honestly for and and it is easy right because it is is basically a text file the only thing is that then you have to learn a few or it's an old way Forum if you wish but there's a community that can help you if you have questions right and the response can come quickly the day after you have rested answers to your requests for your question awesome all right well thank you John