微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Windows Temp目录的自解压zipSFXWindows程序安装程序的最简单方法是什么?

我有一个非常简单的程序,包含一个.NET 2.0 exe(Program.exe),它调用一个x86 Win32.dll(Lib.dll)。

我想将这些文件打包成一个名为Tool.exe的自解压缩文件(SFX)。Tool.exe将文件(Program.exe和Lib.dll)提取到Windows Temp系统目录中,然后调用Program.exe

这样我可以提供一个名为Tool.exe的单个文件.exe下载,就用户而言,他们只是运行Tool.exe而不是一个文件程序。

WinRAR具有SFXfunction,并且能够自动启动一个解压缩的.exe文件,但它似乎没有给你select让它解压缩到Windows Temp目录(你可以指定绝对path,但是Temp目录的变化取决于什么版本的Windows)。 另外,它在提取时会popup一个窗口,这对我的目标来说太过于夸张了,就像用户刚刚启动我的程序一样。

如何将Windows服务从本地PC移动到虚拟专用服务器上

如何在订阅DWM组合/ Aero Glass禁用时引发的操作系统级事件?

如何在MS Windows上加载GTK Sharp主题

如何获得过去10年的夏令时间界限

PrincipalContext.ValidateCredentials会产生PrincipalOperationException

另外,是否有一种方法将本机Lib.dll捆绑到我编译的.NET可执行文件中,就像是一个“资源”?

我真的很想避免在MSI或甚至常规的.exe安装程序上做一个完整的工作,因为这是一件很痛苦的事情,即使是像NSIS这样简单的安装程序也是如此。

在Linux中运行Windows程序

wpf窗口位置的问题

无法findtypes或命名空间“Mono”

.NET和本机C ++应用程序之间进行通信的最佳方式

我应该在哪里存储适用于非漫游用户的机器范围的应用程序设置?

我倾向于使用7-zip和UPX来做到这一点,按照这些指示使其在执行/提取时运行批处理文件 。 下面是一个用于构建包含。 bin目录中的文件的EXE的示例CMD脚本:

pushd %~dp0 upx --ultra-brute 7zsd.sfx cd Bin ..7za a -mx=9 "..Program.7z" * cd .. copy /b 7zsd.sfx + Config.txt + Program.7z Program_Name.exe del Program.7z

config.txt文件如下所示:

;!@Install@!UTF-8! GUIMode="0" RunProgram="runme.cmd" ;!@InstallEnd@!

当然,你的里程可能会有所不同

NSIS有一个名为Zip2Exe的有用工具。 基本上,你给它一个zip文件,并指定提取文件夹(在你的情况下, $TEMP ),它会生成一个安装程序。

您可以以静模式运行这样的安装程序(因此用户实际上看不到安装程序)。 因此,您可能能够安装Tool.exe并为您运行该程序。 安装程序可以是在运行之前首先写入临时文件的嵌入式资源。 然后,用户从不知道任何安装程序。 从他们的角度来看, Tool.exe做了一些工作,给出了一些“请稍候…”的反馈,然后开始运行你想运行的程序,然后Tool.exe退出

编辑:事后看来,从Tool.exe提取并运行Program.exe (和您的dll),然后退出Tool.exe会更容易。 更好的是:让用户运行Program.exe (在加载之前将lib.dll写入磁盘)。

我希望这给你一些想法。 请注意,您可能在使用UAC和病毒扫描程序时遇到麻烦。

DotNetZip可以产生一个SFX,带有一个认的提取目录。 在创建SFX时,将%TEMP%指定为提取位置,并且在SFX实际运行时,变量将被解析。 DotNetZip也可以在提取SFX后运行一个程序,该程序可以是提取的东西之一。

所以你可以使用DotNetZip来做你想做的事情。

本文解释了一个替代方案。 它演示了如何从.NET动态调用本地Win32 DLL。 使用这种技术,可以将库作为资源捆绑到.NET EXE中,然后在.NET EXE启动时提取库,然后将动态调用放入库中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐