Estoy trabajando en un proyecto que necesita un método de operación único que requiere que un instalador de Windows exe (empaquetado con Inno Setup) se actualice con un archivo de configuración diferente que contiene un número de identificación único para cada descarga.
El proyecto en sí es una web para la cual estoy usando PHP en Apache y en Linux.
El instalador contiene un archivo ejecutable binario de Windows y un archivo config.ini . Solo necesito editar el archivo config.ini cada vez que el archivo esté listo para descargar. Las actualizaciones son simplemente un contador incrementado.
No encuentro una dirección para abordar, ya que estoy buscando editar un archivo empaquetado de Inno Setup creado en Windows para editarlo en un servidor Linux.
¿Puede alguien señalarme algunas ideas para lograr esto, por favor?
Gracias,
Sk
Simplemente almacene el archivo de configuración en el instalador sin comprimir para permitir una fácil modificación. Utilice la bandera nocompression . También debe usar el indicador dontverifychecksum , de lo contrario, el instalador considerará que el archivo modificado está dañado durante la instalación.
[Files] Source: "config.ini"; DestDir: "{app}"; Flags: nocompression dontverifychecksumTampoco puede modificar la longitud del archivo. Por lo tanto, debe reservar suficiente espacio en el archivo para números más grandes, como:
[Section] Counter=?????Para modificar el instalador con PHP, ahora puede hacer:
$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 }Si firma el instalador (hoy en día es básicamente necesario para los instaladores descargables), debe firmarlo después de modificarlo.
O consulte Incrustar datos específicos del usuario en un instalador firmado con código de autenticación al descargar .
Otra forma es incluir los datos personalizados en el nombre del instalador.