制作将使用Windows Temp目录的自解压zip(SFX)Windows程序安装程序的最简单方法是什么?

jpe*_*kin 4 .net windows installer winapi

我有一个非常简单的程序,由一个调用x86 Win32 .dll(Lib.dll)的.NET 2.0 exe(Program.exe)组成.

我想将这些捆绑到一个名为Tool.exe的单个自解压zip(SFX)中.Tool.exe会将文件(Program.exe和Lib.dll)解压缩到Windows Temp系统目录中,然后调用Program.exe

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

WinRAR具有SFX功能,能够自动启动提取的.exe,但它似乎没有让你选择让它提取到Windows Temp目录(你可以指定绝对路径,但Temp目录取决于什么版本的Windows).此外,它在提取时弹出一个窗口,这对我的目标来说太过分了,因为用户只是启动了我的程序.

或者,有没有办法将本机Lib.dll捆绑到我编译的.NET可执行文件中,几乎就像一个"资源"?

我真的很想避免在MSI甚至普通的.exe安装程序上进行完整操作,因为这样做很麻烦,即使是像NSIS这样简单的安装程序也是如此.

ewa*_*all 9

我倾向于使用7-zipUPX执行此操作,按照这些说明使其在执行/提取时运行批处理文件.这是我用来构建EXE的示例CMD脚本,包括.\ bin目录中的文件:

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
Run Code Online (Sandbox Code Playgroud)

config.txt文件如下所示:

;!@Install@!UTF-8!
GUIMode="0"
RunProgram="runme.cmd" 
;!@InstallEnd@!
Run Code Online (Sandbox Code Playgroud)

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