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

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

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

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

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

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

Спасибо,
Sk

3

Решение

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

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

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]