Статья : Написать очень маленький инсталлятор 

Главное приложение само выполняет функции инсталлятора. Первоначально файл называется 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