-1

我正在编写一个 NSIS 脚本来安装程序并放入文件夹。该文件夹通过 NSIS 压缩。我希望有人单击 zip 文件,然后将其解压缩并将 NSIS 脚本执行到文件夹中。但是怎么做?

更新:我再次解释。NSIS 有 NSIS 脚本的编译器和基于 ZIP 的安装程序!首先,我编写了一个 NSIS 脚本来在一个文件夹中安装一些程序。执行 NSIS 脚本正在运行!我不想发送文件夹,但我只想发送一个文件。所以我使用基于 ZIP 的安装程序来压缩文件夹。但是,如果我单击压缩文件,它将在桌面上解压缩,而不会将 NSIS 脚本执行到文件夹中。所以我必须将 NSIS 脚本单击到文件夹中。我不想要的!我只想单击压缩文件,它将被解压缩并自动执行 NSIS 脚本。清楚地?

4

2 回答 2

0

您的问题令人困惑,但我相信您想要做的是创建一个包含多个文件并运行的自解压存档,并且该存档中包含的 NSIS 安装程序已解压缩。

你可以用 7zip 做到这一点。

使用 dos 批处理文件最容易做到这一点。打开记事本并创建"selfinstall.bat"

添加以下内容;

(
  ECHO ;!@Install@!UTF-8!
  ECHO Title="My Installer"
  ECHO BeginPrompt="Do you want to run the installer?"
  ECHO ExecuteFile="Setup.exe"
  ECHO ;!@InstallEnd@!
) > temp.$$$

这将设置自解压器所需的信息,例如它的标题(我的安装程序)和要运行的可执行文件的名称(Setup.exe)

然后,添加行以创建您的 zip 文件

7z a -r files.7z myfolder

其中 myfolder 是包含所有文件的文件夹的名称。

现在,添加安装程序 - 确保安装程序 (Setup.exe) 位于 .7z 文件的根目录中

7z a files.7z Setup.exe

然后,将自解压器和 7z 复制到单个可执行文件中

copy /b 7z.sfx + temp.$$$ + files.7z "Install.exe"

然后删除你的临时文件

del files.7z
del temp.$$$

我根据我在这里看到的脚本改编了这个;http://www.911cd.net/forums//index.php?showtopic=18845 有关 .SFX 模块的更多信息,请参见此处;http://7zsfx.info/en/

还有一个用于 GUI 的 sourceforge 项目来完成此任务;http://sourceforge.net/projects/sfx-maker/

于 2012-12-06T16:04:29.573 回答
0

.zip文件无法执行代码。

注意:ZIP2EXE NSIS 工具在内部使用 makensis,它只是一个帮助应用程序,用于创建简单的安装程序。

于 2012-11-16T04:37:42.683 回答