Я хочу создать установщик с Inno Setup, когда я впервые использовал этот инструмент.
Что я пытаюсь сделать, это обернуть существующий установщик существующего программного обеспечения с помощью более подробного самодельного установщика (что означает Setup.exe внутри Setup.exe).Запись 32/64-разрядного ключа реестра в конце установки в Inno Setup
Что работает для меня после изучения до сих пор, просит установщика (Inno Setup * .exe) запустить включенный установщик (фактическая настройка программного обеспечения).
Зачем мне нужен другой установщик? Потому что я хочу дать ему дополнительные функции.
В частности: Я хочу добавить ключ реестра в конце моей установки в качестве последнего шага, подходящего для соответствующей битовой системы (32/64-разрядной). И вот где я спрашиваю экспертную помощь, пожалуйста. (Главная забота)
Мои проблемы в деталях следующим образом:
- мне удалось добавить ключ, используя
[Registry]
раздел Setup Inno. Тем не менее,[Registry]
, кажется, всегда работает до[Run]
- но мне нужен ключ, добавленный после установки (добавленный в путь regedit, который сама создает сама), а не раньше, поэтому я удалил то, что уже работало (как раз в неправильном порядке) под[Registry]
, Для выполнения повторного добавления после основной установки я обнаружил две процедуры:AfterInstall
иCurStepChanged
/ssPostInstall
иDeinitializeSetup
, которые, похоже, не очень хорошо подходят для моей заботы (но мышлениеAfterInstall
было бы тем, что я ищу (?!), так как больше ничего не должно появляться после этого, и я думаю, что он не будет запущен, если установка до этого не была выполнена (?!). - Я не знаю Синтаксис Pascal для добавления ключа реестра (строки) по существующему пути.Я мог бы добавить его под , однако, когда дело доходит до раздела
[Code]
, я чувствую себя немного потерянным, даже я уже много изучил данные о функциях Inno Setup и т. д. - Третья проблема заключается в том, что путь в реестре отличается, в зависимости от того, является ли это 32- или 64 . Поэтому мне действительно нужен дополнительный запрос, который проверяет бит-систему перед добавлением одного или другого пути/ключа (поскольку сама установка программы сама создает путь в зависимости от версии бита), я нашел функцию
IsWin64
(Boolean) , теперь попытка смешивания функции (бит-версия-запрос) с процедурой (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
потому, что это одна вещь, которая работала для меня до сих пор, однако я знаю, что эта функция даже если пользователь выходит из установки до того, как что-либо будет установлено, что не так хорошо.Я запускаю это после установки, потому что сама установка программного обеспечения создает путь, к которому я хочу добавить ключ, нет смысла иметь ключ, пока установка программного обеспечения не удалась ... Возможно, для этого и есть лучший способ.
Извините за много слов, и заблаговременно за любую помощь.
Является ли это на самом деле 'HKLM \ SOFTWARE \ Wow6432Node \ A' против' Reg-Добавить HKLM \ SOFTWARE \ b' или, вернее, ' Reg-Add HKLM \ SOFTWARE \ A'? То есть это единственное различие «Wow6432Node» или фактический конец ключевого пути тоже? –
@MartinPrikryl Вы правы, «Wow6432Node» на пути - единственная разница. Остальное - то же самое, даже запись данных, которую я хочу добавить, одинакова для 32- и 64-битной версии. – Yauhun