修改编译的Inno Setup安装程序中的configuration文件(每个下载的可执行文件的自定义configuration文件)

我正在处理一个项目,需要一个独特的操作方法,它需要一个windows安装程序exe(使用Inno Setup打包)更新为不同的configuration文件,每个下载包含一个唯一的标识号。

该项目本身是一个基于Web的,我在Apache和Linux上使用PHP。

安装程序包含一个Windows二进制可执行文件和config.ini文件。 每次准备下载文件时,我只需要编辑config.ini文件。 更新只是递增计数器。

我没有find一个方向,因为我正在编辑在Windows中创build的Inno Setup打包文件,以便在Linux服务器中进行编辑。

任何人都可以指向我的一些想法,以实现这一点,请。

谢谢,
SK

Solutions Collecting From Web of "修改编译的Inno Setup安装程序中的configuration文件(每个下载的可执行文件的自定义configuration文件)"

只需将配置文件存储到未压缩的安装程序中即可轻松修改。 使用不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 } 

如果您签署了安装程序(您应该),则必须在修改它之后对其进行签名。

或者在下载时将用户特定的数据嵌入到已授权的已签名安装程序中