jrsoftware.org/ishelp/index.php?topic=setupcmdline
у создать установщик с помощью Inno Setup, впервые используя этот инструмент.
То, что я пытаюсь сделать, - это обернуть существующий установщик существующего программного обеспечения более подробным самодельным установщиком (имеется в виду Setup.exe внутри Setup.exe).
Что до меня дошло после исследования, так это попросить установщика (Inno Setup * .exe) запустить включенный установщик (фактическая настройка программного обеспечения).
Зачем мне нужен еще один инсталлятор? Потому что я хочу дать ему несколько дополнительных функций.
На конкретном есть:Я хочу добавить ключ реестра в конце моей установки, как последний шаг, подходящий для соответствующей битовой системы (32/64-битная). И вот тут я прошу эксперта-помощь, пожалуйста. (основная проблема)
Мои проблемы в деталях следующие:
Мне удалось добавить ключ, используя[Registry]
раздел Inno Setup. Тем не мение,[Registry]
кажется, всегда бегать раньше[Run]
- но мне нужен ключ, добавленный после установки (добавленный в regedit-путь, который создает сама установка), а не до этого, поэтому я удалил то, что уже работало (просто в неправильном порядке) в разделе[Registry]
, Для выполнения reg-add после основной установки я нашел две процедурыAfterInstall
а такжеCurStepChanged
/ssPostInstall
, а такжеDeinitializeSetup
что, кажется, не подходит для моей заботы (но думаю,AfterInstall
будет то, что я ищу (?!), так как больше ничего не должно последовать, и я думаю, что он не запустится, если установка до этого уже не удалась (?!).Я не знаю Pascal-синтаксиса для добавления ключа реестра (строки) по существующему пути. Я мог бы добавить это под[Registry]
Однако когда дело доходит до[Code]
Я чувствую себя немного растерянным, даже сейчас я провел много исследований о функциях Inno Setup и тому подобном.Третья проблема заключается в том, что путь в реестре отличается в зависимости от того, является ли это 32- или 64-разрядной системой. Так что мне действительно нужен дополнительный запрос, проверяющий битовую систему перед добавлением того или иного пути / ключа (поскольку установка самой программы создает путь в зависимости уже от битовой версии), я нашел функциюIsWin64
(Boolean), теперь пытаюсь смешать функцию (bit-version-query) с процедурой (AfterInstall
) звучит даже для меня как новичка неправильно. Плюс я попытался создать запрос if-else, и компилятор сказал мне, что я делаю это неправильно.if IsWin64 then...
работает, но добавление еще не делает.Итак, решениетеоретически примерно было бы что-то вроде ...
procedure MyAfterInstall();
function IsWin64: Boolean;
if 64-bit Reg-Add HKLM\SOFTWARE\Wow6432Node\A
else Reg-Add HKLM\SOFTWARE\B
Извините, что не предлагать вам больше. Я обычно не пишу код.
Если уместно, это то, что у меня есть в моем разделе кода до сих пор:
[Code]
procedure DeinitializeSetup();
begin
RegWriteStringValue(
HKEY_LOCAL_MACHINE, 'SOFTWARE\Wow6432Node\A', 'ConnectionString ', 'Data Source=Test;');
end;
Причина, почему я использовалDeinitializeSetup
потому что это одна вещь, которая работала для меня до сих пор, однако я знаю, что эта функция вызывается, даже если пользователь выходит из программы установки перед установкой чего-либо, что не очень хорошо. Я запускаю это после установки, потому что сама установка программного обеспечения создает путь, к которому я хочу добавить ключ, нет смысла иметь ключ, когда установка программного обеспечения не удалась ... Возможно, есть и лучший способ для этого.
Извинения за много слов, и заранее спасибо за любую помощь.