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

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

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

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

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

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

对于混合编程的话,那就复杂多了。可以尝试把调用到的 DLL 全部复制到程序当前目录,但我也不知道是否可行。
tanranran
356 天前
再写一个项目,用于检测是否安装了.net framework ,如果没安装则,释放.net framework 安装文件,如果安装了,则释放项目安装文件
chinadch
355 天前
nsis 创建安装程序,知乎上有流程
hahiru
355 天前
!安装必看.txt
Golor
355 天前
可以用 InnoSetup 打包程序,在 iss 脚本中进行判断是否安装.net freamwork ,若没有安装则进行安装。
lskjdfgl
355 天前
@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