Измените файл конфигурации в скомпилированном установщике Inno Setup (пользовательский файл конфигурации для каждого загружаемого исполняемого файла)

Я работаю над проектом, который нуждается в уникальном методе работы, который требует, чтобы установщик Windows exe (упакованный с использованием Inno Setup) обновлялся с помощью другого конфигурационного файла, содержащего уникальный идентификационный номер для каждой загрузки.

Сам проект представляет собой веб-основу, для которой я использую PHP на Apache и Linux.

Установщик содержит двоичный исполняемый файл Windows и файл config.ini . Мне просто нужно отредактировать файл config.ini каждый раз, когда файл будет готов к загрузке. Обновления – это просто увеличиваемый счетчик.

Я не нахожу направление для подхода, поскольку я смотрю на редактирование упакованного файла Inno Setup, созданного в Windows, для редактирования на сервере Linux.

Может ли кто-нибудь указать мне на некоторые идеи, чтобы достичь этого, пожалуйста.

Благодаря,
Sk

Просто сохраните файл конфигурации в программе установки без сжатия, чтобы обеспечить легкую модификацию. Используйте флаг nocompression . Вы также должны использовать флаг dontverifychecksum , иначе установщик рассмотрит измененный файл как поврежденный при установке.

 [Files] Source: "config.ini"; DestDir: "{app}"; Flags: nocompression dontverifychecksum 

Вы также не можете изменять длину файла. Поэтому вам нужно зарезервировать достаточно места в файле для больших чисел, например:

 [Section] Counter=????? 

Чтобы изменить установщик с помощью PHP, вы можете теперь:

 $counter = $_GET["counter"]; $filename = "mysetup.exe"; $contents = file_get_contents($filename); $mask = "?????"; $prefix = "Counter="; $replace = $prefix . $mask; $p = strpos($contents, $replace); if ($p !== false) { $s = $prefix . str_pad($counter, strlen($mask), "0", STR_PAD_LEFT); $contents = substr($contents, 0, $p) . $s . substr($contents, $p + strlen($replace)); file_put_contents($filename, $contents); // or feed directly to the output stream } 

Если вы подпишете установщика (вы должны), вы должны подписать его после его изменения.

Или см. Вставку пользовательских данных в подписанный подстановочным установщиком при загрузке