gpt4 book ai didi

.net - 7zip 自解压存档 (SFX) 和 .Net 安装程序

转载 作者:行者123 更新时间:2023-12-04 20:16:29 24 4
gpt4 key购买 nike

我正在尝试为我编写的 Windows 应用程序创建一个自解压存档。我的应用程序使用最新的 .Net 4.0,我想在 SFX 安装程序中包含 .Net 设置。但是,如果计算机需要安装 .Net 框架并重新启动,它将无法正确恢复安装我的应用程序。我查看了 Stack 站点上的其他 sfx 帖子,但没有一个问题涉及将 .Net 安装程序作为应用程序的先决条件。

我的项目产生 4 个文件:“App Installer.msi”“setup.exe”“WindowsInstaller-KB893803-v2-x86.exe”(在文件夹“WindowsInstaller3_1”中)和“dotNetFx40_Client_x86_x64.exe”(在文件夹“DotNetFX40Client”中) ,我认为所有这些都是标准的。

我使用 7zip 创建 SFX,如下所示:

首先,使用 7zip 将所有文件压缩到一个存档中:

7z.exe a -r AppInstallFiles.7z *

接下来,我使用 7zS.sfx 文件(用于创建自解压安装程序)、我的配置文件和存档进行二进制复制。配置文件如下:
;!@Install@!UTF-8!
Title="MyApp Installer"
ExecuteFile="setup.exe"
;!@InstallEnd@!

我用以下行复制它们:
copy /b 7zS.sfx + config.txt + AppInstallFiles.7z MyAppInstaller.exe

安装程序在已经有 .Net 4.0 的计算机上完美运行 我的问题出现在没有 .Net Framework 的计算机上 - 我运行 SFX,它将所有内容提取到临时目录。然后,当 setup.exe 识别出计算机没有 .Net 4.0 时,它会调用 .Net 安装程序。这将提取到它自己的临时目录并开始安装。完成后,它会提示重新启动。点击“否”退出整个安装。点击"is"重新启动机器,重新登录时出现错误:“尝试安装 MyApp 时发生错误”,详细信息为“无法找到应用程序文件 'App Installer.msi'

问题似乎是,当安装程序移交给 .Net 安装程序并且 .Net 安装程序重新启动时,包含 My App 安装文件的临时目录被删除。我曾尝试从 setup.exe 切换到使用“App Installer.msi”,但这只会导致 msi 报告计算机没有 .Net 并建议进行 Web 下载。因为我可能在离线情况下安装应用程序,所以这对我不起作用。

之前有没有其他人尝试在 7zip SFX 中包含 .Net 安装程序,如果是,他们是如何解决的?如果可能,我更愿意继续使用 7zip,但如有必要,我会研究其他工具。

最佳答案

问题是 SFX 会在 setup.exe 完成后删除提取的文件。为避免这种情况,您可以使用 InstallPath范围:

;!@Install@!UTF-8!
Title="MyApp Installer"
ExecuteFile="setup.exe"
InstallPath="%temp%\\My App"
;!@InstallEnd@!

但在这种情况下,提取的文件根本不会被删除。例如,您可以在 MSI 中删除这些文件。

PS。如果您的客户将通过远程桌面 session 运行安装程序,您还可以考虑 this issue

关于.net - 7zip 自解压存档 (SFX) 和 .Net 安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com