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

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

请问我该如何实现这样的功能
3163 次点击
所在节点    程序员
18 条回复
ShadowPower
2024 年 1 月 2 日
静态链接
编译选项/MT
lskjdfgl
2024 年 1 月 2 日
@ShadowPower 好像不行,生成后还是只有一个 exe 没有其他的 dll ,在没有 .net framework 的系统上还是提示:

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

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

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

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

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

https://www.v2ex.com/t/1005048

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

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

© 2021 V2EX