【问题标题】:.NET Framework install w/o admin rights.NET Framework 安装无管理员权限
【发布时间】:2011-06-01 19:26:54
【问题描述】:

我正在使用 VS2010 开发 C# WinForms 应用程序,它的目标受众是 8-14 岁的孩子。我估计大约 30% 的用户在他们的计算机上没有管理员权限,因此如果没有他们的父母为他们安装我的应用程序,他们将无法安装它。

有没有什么方法可以让我在不需要管理权限的情况下安装 .NET Framework,或者以某种方式将所需的 .NET 组件与我的应用程序捆绑在一起?我目前正在为 .NET Framework 4 进行开发,但如果需要,我可以轻松更改我的代码以使其与 .NET 2 或 3.5 一起使用。

【问题讨论】:

  • .NET 3.5 包含在 Win 7 中,因此可能会增加您可以访问的数量。

标签: c# .net


【解决方案1】:

我建议不要尝试为孩子开发一个程序,该程序明确地试图绕过管理访问权限,只是因为父母必须参与其中。家长应该参与孩子在电脑上安装的软件。

【讨论】:

  • 令人惊讶的是,一个好奇的 10 岁孩子刚刚发现如何从 Web 安装程序,却能如此迅速地破坏机器。我完全同意父母的监督。从 Web 安装内容绝不应掉以轻心。
  • 正好相反:我在小时候学到了很多破解和修复我的操作系统的知识,我怀疑在 SO 用户中我并不孤单。不给我的孩子同样的学习机会,当然还有一些指导和护栏,那就太虚伪了……
【解决方案2】:

死灵术,因为现在是 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

更多信息: Understanding .Net Core and Mono.NET Core vs Mono

不过,WinForms 和 WPF 将在 2019 年随 .NET Core 3.0 一起提供。(现在是 RTM)
在 .NET Core 3.0 之前,如果您使用 WPF,那么您就不走运了。
但是如果你使用 WinForms,你可以使用mono's WinForms implementation compiled for NetStandard 2.0+

但是,这意味着您必须将自己限制在 Mono 实现的 WinForms 部分(暂时)。

还有Avalonia framework,如果你想做跨平台开发的话。

或者您可以在浏览器中执行所有操作,然后在客户端上启动服务器+WebBrowser - 这应该可以在任何地方使用,特别是如果您为 Windows 用户添加 Chrome/Chromium 以避免浏览器问题 (MS InternetExploder)。

【讨论】:

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

如果不先在您的机器上安装 .NET,就无法运行 .NET 应用程序,是的,安装确实需要管理员权限。允许普通用户这样做会首先破坏访问限制的全部意义。

【讨论】:

    【解决方案4】:

    在最终用户没有管理员权限的情况下安装包含 .net 框架的应用程序是完全可能的,但不一定实际。您想要做的一般类别称为应用程序虚拟化。我们使用 VMWare ThinApp,这是一种应用程序虚拟化技术,类似于本线程前面文章中提到的 Spoon。该类别中的其他应用程序包括 Cameyo (www.cameyo.com) 和 InstallAware (www.installaware.com/virtualization/)。

    您还可以在网络上搜索“Application Virtualization”并找到其他结果。您需要忽略 Microsoft App-V 和 Citrix XenApp,因为这些解决方案的目标客户是希望虚拟化应用程序以在公司网络内部部署的企业。

    【讨论】:

      【解决方案5】:

      您可以尝试使用零安装程序,例如来自 http://spoon.net 的安装程序,它可以创建 .NET 应用程序的单个文件分发,并可选择在零安装程序中包含特定的 .NET Framework。您可以将这些托管在 spoon 上以流式传输到客户端计算机,或者选择使用 Spoon Studio (http://spoon.net/Studio/) 自己部署单个文件 exe

      【讨论】:

        【解决方案6】:

        这是一个老问题,但似乎 Microsoft 正在计划一个 .NET Native 功能,该功能将在某个时候允许您编译不依赖于正在安装的 .NET Framework 的自包含 C# 应用程序,因此理论上会结束尝试将针对较新版本框架的 .NET 应用程序分发给没有管理员权限的用户,这让他们非常头疼。

        【讨论】:

        • 据我了解,原生应用仅适用于微软应用商店
        【解决方案7】:

        我们也不允许在我们的工作站上安装软件,但我们可以在我们的 dotNet Core 上使用 SDK 二进制文件(不是安装程序,因为它们需要管理员权限)和 dev工作站,无需管理员权限即可完成所有这些操作。

        只需从dotNet Core download page 下载二进制文件并选择“二进制安装程序”。然后根据需要提取 SDK。

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

        对于我来说,我将二进制文件解压缩到 C:\dev\dotnetCore,因此我将值设置为 C:\dev\dotnetCore。稍后快速重启 Visual Studio 和 .Net Core 2.1 及更高版本现在出现在我可用的目标框架中。

        【讨论】:

        • 问题是关于 .NET Framework,不是 .NET Core。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-08
        • 2014-05-31
        • 1970-01-01
        • 2011-11-20
        相关资源
        最近更新 更多