1

如果这不是问这个问题的正确地方,我很抱歉。

我使用 7zip 创建安装程序包。最近,我的电脑更新了,我不能再让它工作了。我使用 Visual Studio 2010 中的 Windows Installer 创建安装包,并将其添加到名为 setup.7z 的文件中。我已确认文件已正确存档。然后我打电话

copy /b 7zsd.sfx + config.txt + setup.7z setup.exe

它将所有内容打包到一个名为“ setup.exe”的文件中。单击此按钮将启动安装程序。

更新后,我仍然可以制作文件,而且看起来还不错。但是,如果我尝试单击它,我会收到一条消息说7-Zip: Unsupported method.

我安装了 7-Zip 版本 18.05 (x86)。老实说,我不确定我从哪里得到7zsd.sfx文件,但请记住必须找到它。它没有版本控制,但最后一次修改是在 2007 年 7 月 13 日。我不知道版本是否重要,因为您不需要安装 7-Zip,因为这是一个自解压文件。但是,可能是旧版本无法解压缩新版本压缩的内容。

4

2 回答 2

1

我认为问题在于使用的 7zip 和 7zip.sfx 的不同版本。不幸的是,最新的 7zip 包中没有 SFX 文件。这是一些旧版本的 7zip_extra链接,该版本同时具有 SFX 文件和 .bat 文件以创建安装程序。对我来说很好。

于 2018-11-16T02:24:51.420 回答
0

设置工具:为什么选择 7-Zip?创建(真实)设置有很多替代方法 - 其中一些是免费的:如何创建 Windows 安装程序(用于创建各种设置的工具的几个链接)。下面还有简要说明 - 在“Alternatives”(免费工具或具有免费功能的工具)下。这些工具已经过广泛测试,以确保以最小的依赖性运行。我猜只是要记住和评估的东西。

7-Zip

猜测:首先安装C/C++ 运行时,看看问题是否消失。接下来检查压缩 - 然后检查LZMA SDK ,如下所述?

不支持压缩?: 7-Zip: 不支持的方法- 使用 LZMA?我想这个问题仍然可能发生,尽管这个答案已经有几年了。

缺少运行时?:您可能还想对其进行依赖遍历检查,setup.exe以查看它是否依赖于盒子上缺少的东西(例如MSVCRT.dll- 或另一个运行时库)。只需下载该工具。便于使用。或者也许首先尝试install commonly used C/C++ runtimes. 此外,Dependency Walker 正在老化并且有时会显示垃圾。有较新的Dependencies - 但它还不是黄金时间,但请尝试一下(单击Releases选项卡)。它已更新为处理Windows API 集和 WinSxS(并行程序集)。注意: virustotal.com上的一些安全软件依赖项检测为“风险工具,而不是病毒”(它是开源的)。

LZMA SDK:该7zSD.sfx文件可能来自LZMA SDK。您描述的命令行可以在主要的 7-Zip 帮助文件中找到(不是 SDK,而是常规 7-zip 安装附带的那个)。部分"-sfx (Create SFX archive) switch"Command Line Version => Switches => -sfc (Create SFX Archive


备择方案

Visual Studio 2017:Visual Studio 的最新免费版本: Visual Studio Community 2017setup.exe可以通过其Microsoft Visual Studio 2017 安装程序项目创建(此扩展必须在安装 Visual Studio 2017 后安装)。

WiX:开源WiX 工具包setup.exe可以使用其刻录组件创建一个 WiX Burn ad-hoc 示例- 只是为了大致了解一下 - 它有一个学习曲线。没有 GUI 可以帮助您,它都是基于 XML 的。使用或不使用 Visual Studio。

高级安装程序:我相信高级安装程序setup.exe甚至可以在他们的免费版本中编译尽管下载量有点大,但我认为这对您有用并且速度很快。

高级安装程序更新免费版只能构建 MSI 文件,EXE 引导程序可以使用付费版(其中任何一个)构建。

dotNetInstaller:还有dotNetInstaller Setup Bootstrapper - 我从未使用过。它在 github.com 上(来源)。

InnoNSIS:这些免费的非 MSI 安装程序可以轻松地为您创建一个setup.exe已针对最小依赖性进行了优化的安装程序。我没怎么用过它们,但它们是众所周知的。NSIS 似乎创建了与 Zip 工具兼容的存档文件。

IExpress等人:存在影响这些自解压包安全漏洞我推荐使用具有专用资源的“真实”部署工具来快速修复此类问题的另一个原因,尽管setup.exe可以直接在 7-zip 中打开它的好处。


文件提取

关于从各种类型的文件中提取文件的主题:setup.exe

  • MSI :从 EXE 中提取 MSI - 可以提取所有 MSI 文件,也可以提取setup.exe使用 WiX 创建的文件
  • NSIS & Inno:看起来 NSIS 创建了与 7-Zip(可理解压缩)兼容的文件,从外观上看,与 Inno 不兼容。

一些链接

  • https://en.wikipedia.org/wiki/Self-extracting_archive#Overview:“要使解压实用程序正确扩展自解压或标准类型的存档,它必须能够对文件格式和使用的算法。因此,放置在自解压存档开头的确切可执行代码可能需要根据用于创建存档的选项而有所不同。与 LZMA2 相比,LZMA 7z 存档的解压缩例程将有所不同例如 7z 存档。
于 2018-08-09T00:42:16.763 回答