在没有管理员权限的情况下安装.NET Framework

7
我正在使用VS2010开发一个面向8-14岁儿童的C# WinForms应用程序。我估计约有30%的用户没有在计算机上拥有管理员权限,因此他们将无法安装我的应用程序,除非他们的父母为他们安装。
是否有任何方法可以使.NET Framework在不需要管理员权限的情况下安装,或者将所需的.NET组件与我的应用程序捆绑在一起?我目前正在开发.NET Framework 4,但如果需要,我可以轻松更改我的代码以使其与.NET 2或3.5兼容。

.NET 3.5已经包含在Win 7中,这可能会增加您可以到达的数量。 - m4tt1mus
我认为更简洁的问题是如何在没有管理员权限的情况下为dotnet cli安装.Net框架开发人员包。可下载的开发人员包msi需要管理员权限。 - The Sharp Ninja
6个回答

5

现在是2018年,如果您想进行死灵术。
是的,您可以这样做。 .NET-Core允许您进行所谓的自包含部署。

Windows-x86-32:

dotnet restore -r win-x86
dotnet build -r win-x86
dotnet publish -f netcoreapp2.0 -c Release -r win-x86

Windows-x86-64:

dotnet restore -r win-x64
dotnet build -r win-x64
dotnet publish -f netcoreapp2.0 -c Release -r win-x64

更多信息请参考: 理解 .Net Core 和 Mono 以及 .NET Core 与 Mono 然而,WinForms 和 WPF 将在2019年随 .NET Core 3.0 一起推出。(现已发布) 在 .NET Core 3.0 之前,如果您使用 WPF,则没有办法。 但如果您使用 WinForms,则可以使用 mono 的 WinForms 实现,编译为 NetStandard 2.0+
然而,这意味着您必须限制自己使用 mono 实现的 WinForms 的部分功能(目前)。
如果您想进行跨平台开发,还有 Avalonia 框架
或者您可以直接在浏览器中完成所有操作,并在客户端启动服务器+WebBrowser - 这应该可以在任何地方使用,特别是如果您包括 Chrome / Chromium 以避免浏览器问题 (MS InternetExploder)。

这个问题是关于.NET Framework的,不是 .NET Core。回答如何安装另一种技术已经晚了8年,没有意义。 - Camilo Terevinto
@Camilo Terevinto:好的,使用.NET 5后,.NET Framework和.NET Core之间不再有任何区别。或者说,除了.NET Core之外,没有其他任何东西了。 - Stefan Steiger
好的,.NET Framework 4.8 可能会在未来的10年内得到支持,所以我不会说只有 .NET Core。还有很多 .NET Core 做不了并且可能永远也做不了的事情(比如 WCF、WebForms 等)。 - Camilo Terevinto
@Camilo Terevinto:当然,但是WCF和WebForms现在已经正式过时了。 那么这10年会过去,之后呢?新硬件将需要新操作系统,旧软件无法在新软件上运行。 这只是时间问题。回答这个问题的重点是,如果您升级到新框架,您现在有一个开箱即用的解决方案。此外,在我写这篇文章时,.NET Core才刚推出。除此之外,我不喜欢“可能”这个词——如果他们决定浪费时间和未来机会不值得,他们会怎么办?他们甚至会承认吗?只要微软没事,谁关心你的公司呢? - Stefan Steiger

2

没有办法在机器上运行.NET应用程序而不先安装.NET,是的,安装需要管理员权限。允许普通用户进行此类操作将破坏首次设置访问限制的整个意义。


2

完全有可能(虽然不一定实际可行)在没有管理员权限的情况下安装包括 .net 框架的应用程序。你想要做的一般类别被称为应用程序虚拟化。我们使用 VMWare ThinApp,这是一种类似于此线程早期帖子中提到的 Spoon 的应用程序虚拟化技术。该类别中的其他应用程序包括 Cameyo (www.cameyo.com) 和 InstallAware (www.installaware.com/virtualization/)。

你也可以通过网络搜索“应用程序虚拟化”来查找其他结果。你需要忽略 Microsoft App-V 和 Citrix XenApp,因为这些解决方案针对企业,旨在将应用程序虚拟化以供部署在公司网络内部使用。


0
你可以尝试使用零安装程序,例如 http://spoon.net 提供的工具。它可以创建单个文件的 .NET 应用程序分发,并且可以选择在零安装程序中包含特定的 .NET Framework。这些文件可以托管在 Spoon 上以流式传输到客户端电脑,或者选择使用 Spoon Studio(http://spoon.net/Studio/)自行部署单个文件的可执行文件。

0

我们也不能在工作站上安装软件,但是我们可以使用SDK二进制文件(不包括安装程序,因为它们需要管理员权限)并在我们的工作站上使用dotNet Core进行开发,而这一切都不需要管理员权限。

只需从dotNet Core下载页面下载二进制文件并选择“二进制安装程序”即可。然后在任意位置解压SDK。

接下来,将路径添加为新的用户路径变量。从开始菜单中键入“环境”,然后选择编辑您帐户的环境变量。然后添加一个名为MSBuildSDKSsPath的新变量,并设置值为您提取二进制文件的位置。

对我来说,我将二进制文件提取到了C:\ dev \ dotnetCore,所以我将其值设置为C:\ dev \ dotnetCore。稍后快速重新启动Visual Studio,现在我的可用目标框架中出现了.Net Core 2.1及以上版本。


这个问题涉及到的是.NET Framework,而不是.NET Core。 - Camilo Terevinto

0

这是一个老问题,但似乎微软正在计划一项.NET Native功能,该功能将允许您编译自包含的C#应用程序,而不依赖于安装.NET Framework,因此理论上可以结束尝试将针对较新版本框架的.NET应用程序分发给没有管理员权限的用户所涉及的巨大头痛。


据我所了解,本地应用程序仅适用于Microsoft应用商店。 - Jeffrey L. Roberts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接