如何通过NSIS解压缩zip文件并自动执行NSIS-scriptfile到文件夹?

时间:2012-11-15 17:11:09

标签: nsis

我正在编写一个NSIS脚本来安装程序并放入文件夹。该文件夹通过NSIS压缩。我想,有人点击一次zip文件,它将被解压缩并执行NSIS脚本到文件夹。但是如何?

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

2 个答案:

答案 0 :(得分:0)

.zip个文件无法执行代码。

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

答案 1 :(得分: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.$$$

这将设置自助文件所需的信息,例如标题(My Installer)和要运行的可执行文件的名称(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/