Статья : Написать очень маленький инсталлятор
Главное приложение само выполняет функции инсталлятора. Первоначально файл называется Setup.exe. При запуске под этим именем приложение устанавливает себя, после установки программа переименовывает себя и перестает быть инсталлятором.
Application.Initialize;
if UpperCase(ExtractFileName(Application.ExeName))='SETUP.EXE' then
// форма инсталлятора
Application.CreateForm(TSetupForm, SetupForm)
else
// форма основной программы
Application.CreateForm(TMainForm, MainForm);
Application.Run;
Вполне очевидно, что вместо переименования можно запускать программу с различными ключами, например /INSTALL и /UNINSTALL