如何将 visual c++ + Windows 窗体应用程序 打包

2024-01-02 09:37:52 +08:00
 lskjdfgl
程序是:visual c++ + Windows 窗体应用程序
需求:在项目打包的时候将.net framework 的运行时信息一起打包
期待:将程序复制到没有 .net framework 的电脑上也可以直接运行,不用先安装 .net framework, 似于 .Net Core 的独立发布。

请问我该如何实现这样的功能
2141 次点击
所在节点    程序员
18 条回复
ShadowPower
2024-01-02 09:40:38 +08:00
静态链接
编译选项/MT
lskjdfgl
2024-01-02 10:04:28 +08:00
@ShadowPower 好像不行,生成后还是只有一个 exe 没有其他的 dll ,在没有 .net framework 的系统上还是提示:

若要运行此应用程序,您必须首先安装 .NET Framework 的以下版本之一:

v4.0.30319
ShadowPower
2024-01-02 10:16:47 +08:00
那是 C#程序吧……
.NET Framework 4.0 的话,无解
lonewolfakela
2024-01-02 10:40:01 +08:00
visual c++ Windows 窗体应用程序运行时是不需要.net framework 的,你最好先研究清楚是不是搞错了啥……
nuk
2024-01-02 10:47:38 +08:00
publish 的时候自包含不行么
tool2d
2024-01-02 11:01:30 +08:00
vc 似乎可以混合编程,就是一部分用 c#,另外一部分用 c++,对新手很容易搞混。

如何可以的话,考虑让 gpt 把 c#代码转换成 c++,就可以用一楼的方法解决了。
tsanie
2024-01-02 11:07:05 +08:00
或者可以选择.net core ,然后 publish 成 self-contained 的
ysc3839
2024-01-02 11:13:32 +08:00
你先截图看看是 C++还是 C#吧
zsxzy
2024-01-02 11:19:42 +08:00
nsis
Cloutain
2024-01-02 11:20:04 +08:00
VC 程序还是.NET 程序都搞不清?或者是 VC 程序引用了.NET 的库?
lskjdfgl
2024-01-02 11:27:50 +08:00
@lonewolfakela 项目有 vc++ 和 .net
![20240102112551]( https://i2.100024.xyz/2024/01/02/imq6i3.webp)
lskjdfgl
2024-01-02 11:30:13 +08:00
@ysc3839 @Cloutain 已追加截图
@tsanie @nuk 不是新建的 c#项目不能使用 .net core 和 publish
cnbatch
2024-01-02 13:30:34 +08:00
混合编程?可能无解,纯 C# 可以主动更改引用的 .NET Framework DLL ,已经有人试过可行:
https://www.yycoding.xyz/post/2023/9/21/publish-dotnet-windows-application-into-a-single-file-executables

对于混合编程的话,那就复杂多了。可以尝试把调用到的 DLL 全部复制到程序当前目录,但我也不知道是否可行。
tanranran
2024-01-02 14:01:09 +08:00
再写一个项目,用于检测是否安装了.net framework ,如果没安装则,释放.net framework 安装文件,如果安装了,则释放项目安装文件
chinadch
2024-01-02 14:14:53 +08:00
nsis 创建安装程序,知乎上有流程
hahiru
2024-01-02 14:40:51 +08:00
!安装必看.txt
Golor
2024-01-02 14:56:25 +08:00
可以用 InnoSetup 打包程序,在 iss 脚本中进行判断是否安装.net freamwork ,若没有安装则进行安装。
lskjdfgl
2024-01-02 15:14:14 +08:00
@tanranran @Golor 谢谢 使用了 vs2010 自带的 visual studio installer 实现了安装前先检查有没有.net framework 环境,没有的话,就先安装.net framework ,安装后再复制程序文件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/1005048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX