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

标签 .net windows winapi installation

我有一个非常简单的程序,它包含一个调用 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 版本而异)。此外,它在提取时会弹出一个窗口,这对于我的目标来说有点矫枉过正,就像用户刚刚启动我的程序一样。

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

我真的很想避免制作完整的 MSI 安装程序,甚至是常规的 .exe 安装程序,因为这样做很痛苦,即使使用像 NSIS 这样更简单的安装程序也是如此。

最佳答案

我倾向于只用 7-zip 来做到这一点和 UPX , 关注 these directions to make it run a batch file upon execution/extraction .这是我用来构建 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

config.txt 文件内容如下:

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

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

关于.net - 制作将使用 Windows Temp 目录的自解压 zip (SFX) Windows 程序安装程序的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088233/

相关文章:

c# - 断言方法标签的存在

python - Windows 错误 [5] : Access Denied H2o Deep Learning Framework Initialization using Python

c++ - Win32 : capture handle to Display monitor

winapi - 在线程持续时间内更改光标

c# - 浮点值在 Int 中丢失

C# WPF 按钮 "Content"未显示

.net - 如何将 Win32 鼠标消息转换为 WPF 鼠标事件?

c# - Windows RPC 调整

Windows ISO 8601 时间戳

c++ - Win32 API 中的 MK_CONTROL 和 VK_CONTROL 有什么区别?