问题标签 [self-extracting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3697 浏览

executable - 7zip 自解压 exe“解压到”文件夹名称中的空格问题

几年来,我们一直在使用 7zip 压缩我们的软件包以创建一个自解压可执行文件。我们的默认值InstallPath是没有空格的路径,例如C:\Install\Downloads,这很好用。但是,当路径更改为文件夹名称中带有空格的自定义位置时,例如C:\my temp folder\Downloads,提取仍然会成功,但无法找到可执行文件并且无法运行。

弹出的错误信息是执行期间出错“C:\my temp folder\Downloads\foo\setup.exe”。该系统找不到指定的文件。如果您打开它所指的文件夹位置,setup.exe 文件肯定在那里。RunProgram无论启动配置文件变量中指定的可执行文件,自定义文件位置中的空格似乎都令人困惑。

我们的配置文件:

有什么帮助吗?

0 投票
1 回答
264 浏览

zip - 可以创建将自身提取到新创建的目录的存档吗?

如果可能的话,我想压缩一些文件,当这个 zip 文件的接收者解压缩它(或双击它)时,它会在本地磁盘上创建一个目录并将包含的文件解压缩到该目录。有人可以指出我如何实现这一目标的正确方向吗?

0 投票
1 回答
1068 浏览

self-extracting - 实施自解压档案?

我知道我可以使用 7z 或 winrar,但我想自己学习。

我将如何实现自解压存档?我可以使用 C# 或 C++,但让我解决问题。

当我打开 exe 时,我需要某种 GUI 来询问在哪里提取文件。一旦用户说好的,我显然应该提取它们。我已经在 C# winforms 中实现了一个简单的示例,但我的问题是如何将文件的文件名和二进制文件放入 exe 中?

曾几何时,我问将额外数据添加到 exe 末尾是否安全?答案建议如果我只是将数据添加到 exe 的末尾,它可能会被病毒扫描程序拾取。现在很容易将存档的长度写为最后 4 个字节,只需将数据附加到我的通用 exe 中,我相信我的进程可以读取我自己的 exe,所以这可以工作。但这感觉很hacky,我宁愿不要因为我使用这种技术而让人们指责我编写病毒。实现这一点的正确方法是什么?

注意:我检查了自解压标签,很多问题是如何操作自解压而不是如何实现。除了这个问别的东西自解压自检可执行文件

-edit- 我用 7z 做了两个自解压并比较了它们。它看起来像......它是7z.sfx文件,但附加了一个常规的 7z 存档。所以……这样做有什么不对吗?有没有更好的办法?我的目标是 Windows,可以使用 C# 编译器来提供帮助,但我不知道有多少额外的工作或以编程方式可能有多困难,也许将数据添加到 exe 的末尾不是坏事吗?

0 投票
1 回答
480 浏览

self-extracting - 无法在 IExpress 中设置 Self Extractor 的版本信息

实际上,尝试为通过 IExpress 创建的自提取器设置版本信息。搜索后我得到了以下LINK,然而,它不识别来自版本部分的值,每次都发布来自 Wextract.exe 的默认值。似乎是 IExpress 忽略了 [VersionSection]。我在 SED 文件中尝试了以下内容。

请帮我解决问题。提前致谢。

0 投票
2 回答
2607 浏览

visual-c++ - 如何在 Visual C++ 中控制 PE 段顺序

我正在尝试编写一个打包器/自解压 exe 类型程序,但我遇到了由 Visual C++ 链接器创建的段顺序的问题。

基本上我有一个存根程序(加载程序),它有一个像这样定义的特殊变量:

它对其中的数据做一些事情blah(例如解包数据)。

第二个程序(打包程序)然后使用加载程序作为模板来创建一个包含一些数据的新程序blah

.blah基本上,打包程序会复制加载程序文件,然后用一些新数据替换旧部分。当新文件被执行时,加载器对这个新数据进行操作。

现在修改 exe 文件是一项棘手的工作,所以为了简单起见,我想.blah成为文件中的最后一段,这样我就可以简单地将数据附加到加载器,然后在 PE 头中修复一些大小字段。

但是,我不知道如何控制 Visual C++ 链接器中段的顺序,以便在.blah编译加载程序时将其放在文件末尾。

目前部分顺序是这样的:

如您所见.rsrc并且.reloc在错误的位置,我之前需要它们.blah

我该怎么做才能更改此订单?

0 投票
0 回答
369 浏览

windows - 如何以编程方式识别自解压可执行文件并解压缩包含的文件?

我做了一些基础研究,似乎没有一个标准可以创建这些。我看到了许多代码项目页面,其中包含用于构建此类 exe 的代码,但没有关于如何识别一个的参考,也没有在不实际运行应用程序的情况下提取文件的参考。

所以问题是:

  1. 有没有一种方法可以用来识别特定文件是否是自解压 exe?
  2. 有没有几种在计算行业中非常常见的格式
  3. 如果是这样,这些格式是否允许在不运行打包 exe 的情况下进行提取?
  4. 如果没有,有没有办法在某种沙箱环境中运行这样的文件,让我们看到生成的文件(在 Windows 上)?

注意我对编程解决方案或使用第三方实用程序/库的解决方案持开放态度。

0 投票
1 回答
1870 浏览

c++ - 如何使用 C++ 自提取二进制资源(可执行文件)?

我需要提取一个二进制资源(在我的项目中)但是,我想不出任何办法,我使用的是 Windows/C++。

我该怎么做?

(任何帮助将不胜感激)

0 投票
1 回答
7794 浏览

c# - GZip 标头中的幻数不正确。确保您传入的是 GZip 流。(.exe 文件)

我想提取一个exe文件。exe 文件包含一些文件和文件夹。当我尝试使用 winrar 提取文件时,它会被提取,但是当我尝试使用一些示例提取 exe 文件时,我收到此错误:

GZip 标头中的幻数不正确。确保您传入的是 GZip 流。

我使用了一些示例并在 Google 上搜索了很多我的问题,但没有得到我的答案,而且我也使用了一些库。

我使用了这段代码,但同样的错误:

0 投票
2 回答
2040 浏览

c++ - 如何使用某种二进制签名识别 WinRAR SFX?

我正在寻找与此问题中的答案类似的答案,但使用的是 WinRAR 而不是 7zip。本质上,我想要一个权威的签名,我至少可以说“所有 WinRAR 生成的自解压可执行文件在版本 420 中使用默认 SFX 文件创建,在位置 0x00027400 和其他非SFX 文件不太可能有这个签名”。更好的是,如果可以在所有版本的 WinRAR SFX 文件中找到相同的签名,即使它们位于不同的位置。

就 SFX 的工作方式而言,它们非常相似,除了文件的存档部分,但有些字符串的标识符很差(例如,“这个程序不能在 DOS 模式下运行”出现在每个 SFX 中,但它恰好也存在于大多数其他 Windows 可执行文件中)

目前我确定签名的方法是查看不同版本的 WinRAR SFX,并找到所有文件共有的 4 或 6 字节序列。不幸的是,其中有很多,因此很难选择一个。

0 投票
2 回答
1201 浏览

file - 如何设置自解压 zip 文件的文件版本和产品版本属性?

我有一个 EXE 文件,它是一个自解压的 zip 文件。EXE文件如何设置产品版本和文件版本?Windows 在文件属性中列出了它们,但它们都是空白的。Winzip 中可用的描述字段似乎对文件属性没有影响。

我正在使用 Winzip Self-Extractor 4.0 个人版,但其他解决方案/解决方法将不胜感激。