Вы не упоминаете язык для этого, но если Вы ищете действительно хорошую обертку Objective C вокруг getopt тогда, платформа Dave Dribin DDCLI действительно хороша.
.msi-файлы - это файлы установщика Windows без среды выполнения установщика Windows, setup.exe может быть любой исполняемой программой (возможно, той, которая устанавливает что-то на ваш компьютер)
MSI - это, по сути, установщик от Microsoft, встроенный в Windows. Он связывает компоненты с функциями и содержит информацию об управлении установкой. Необязательно, чтобы этот файл содержал фактические файлы, необходимые пользователю, то есть прикладные программы, которые пользователь ожидает. MSI может содержать внутри себя другой файл setup.exe, который оборачивается MSI и фактически содержит файлы, необходимые пользователю.
Надеюсь, это развеет ваши сомнения.
An MSI is a Windows Installer database. Windows Installer (a service installed with Windows) uses this to install software on your system (i.e. copy files, set registry values, etc...).
A setup.exe may either be a bootstrapper or a non-msi installer. A non-msi installer will extract the installation resources from itself and manage their installation directly. A bootstrapper will contain an MSI instead of individual files. In this case, the setup.exe will call Windows Installer to install the MSI.
Some reasons you might want to use a setup.exe: