我正在使用VS2010开发一个C#WinForms应用程序,其目标受众是8-14岁的孩子。我估计大约30%的用户不会在他们的计算机上拥有管理访问权限,因此如果没有父母为他们安装我的应用程序,将无法安装我的应用程序。
有没有办法在不需要管理权限的情况下安装.NET Framework,或以某种方式将所需的.NET组件与我的应用程序捆绑在一起?我目前正在为.NET Framework 4开发,但如果需要,我可以轻松地将代码更改为使用.NET 2或3.5。
答案 0 :(得分:10)
我建议不要试图为那些明确试图绕过行政访问的孩子开发一个程序,因为父母必须参与其中。家长们应该参与孩子们在他们的计算机上安装的软件。
答案 1 :(得分:2)
如果没有先在计算机上安装.NET,就无法运行.NET应用程序,是的,安装确实需要管理员权限。对于普通用户而言,这样做首先会破坏访问限制的重点。
答案 2 :(得分:1)
您可以尝试使用零安装程序,例如来自http://spoon.net的零安装程序,它可以创建.NET应用程序的单个文件分发,并可选择在零安装程序中包含特定的.NET Framework。您可以使用勺子托管这些文件以便流式传输到客户端计算机,或者选择使用Spoon Studio(http://spoon.net/Studio/)自行部署单个文件exe
答案 3 :(得分:1)
安装包含.net框架的应用程序而不是最终用户具有管理员权限是完全可能的,但不一定实用。您要执行的操作的常规类别称为Application Virtualization。我们使用VMWare ThinApp,这是一种类似于此线程早期帖子中提到的Spoon的应用程序虚拟化技术。该类别中的其他应用包括Cameyo(www.cameyo.com)和InstallAware(www.installaware.com/virtualization/)。
您还可以对“Application Virtualization”进行网络搜索并查找其他结果。您将忽略Microsoft App-V和Citrix XenApp,因为这些解决方案面向希望虚拟化应用程序以在企业网络内部部署的企业。
答案 4 :(得分:1)
这是一个老问题,但似乎Microsoft正在计划一个.NET Native功能,在某些时候允许您编译不依赖于正在安装的.NET Framework的自包含C#应用程序,这样就可以了理论上结束了尝试将针对较新版本的Framework的.NET应用程序分发给没有管理员权限的用户所带来的巨大麻烦。
答案 5 :(得分:0)
不断完善,因为现在是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。
如果您使用WPF,那么您就不走运了。
但是,如果使用WinForms,则可以使用为NetStandard 2.0+编译的mono的WinForms实现。
我是在这里做的:
https://github.com/ststeiger/System.CoreFX.Forms
但是,这意味着您必须将自己局限于WinForms单行实现的部分(暂时)。
如果要进行跨平台开发,还可以使用Avalon框架。
或者您可以在浏览器中完成所有操作,然后在客户端上启动服务器+ WebBrowser-应该可以在任何地方使用。特别是如果您为所有Windows用户都包括Chrome / Chromium。
答案 6 :(得分:0)
我们也不允许在工作站上安装软件,但是我们可以使用SDK二进制文件(不是安装程序,因为它们需要管理员权限)并在dotNet Core中进行开发工作站,并且无需管理员即可完成所有这些操作。
只需从dotNet Core download page下载二进制文件,然后选择“二进制安装程序”。然后根据需要提取SDK。
接下来,将路径添加为新的用户路径变量。在“开始”菜单中,键入“环境”,然后选择为您的帐户编辑环境变量。然后添加一个名为MSBuildSDKSsPath
的新变量,其值与提取二进制文件的位置有关。
对我来说,我将二进制文件提取到C:\ dev \ dotnetCore,因此将值设置为C:\dev\dotnetCore
。现在,可以在我可用的targer框架中快速重新启动Visual Studio和更高版本的.Net Core 2.1。