要使用此部署,客户机必须有.net framework 并且要有一个internet连接.此外,用于部署的系统必须是一个安装有.net 和iis 的web服务器
被部署的应用程序放在服务器上的一个目录中,可以用一个url来定位。然后,应用程序可以通过以下二种方式之一来启动:
在WEB页面上单击指向服务器上应用程序的启动EXE的链接。
使用一个小“启动程序”应用程序指向服务器上的主应用程序。这个启动程序实际上是指向应用程序的一个本地快捷方式。
此二者都是从internet上下载应用程序并在本地执行.
以下是具体步骤:
1:严格按照开发windows窗体应用程序的方法构建窗体应用程序
2开发完成后,为应用程序中的所有windows窗体项目更改编译选项以创建一个DLL文件.假设我们已创建了一个AppDll1.dll.
3将包含应用程序的所有DLL复制到一个WEB文件夹中.这包括应用程序的用于启动WINDOWS窗体的DLL, 以及应用程序所需组件或其他DLL.
4:创建启动程序,主要使用了反射功能.开始一个新的应用程序.在窗体上放一个按钮.代码如下:
using System.Reflection;
try
{
string sUrl=“htpp://mywebserver/myapp/appdll1.dll“;
Assembly objAss=Assembly.LoadFrom(sUrl); //获得程序集
Type formType=objAss.GetType(“MyProjectName.StartForm“); //获得程序集中清单中的类型
object obj=Activator.CreateInstance(formType); //根据类型动态创建一个对象
Form f=(Form)obj;
f.Show();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
当我们启动应用程序时,看一下后台所发生的事性:
启动时,它请求从客户机上尚未存在的程序集加载类,此时将自动从部署WEB服务器上获取程序集并放到本地客户机上.它驻留在客户机的应用程序下载缓存中.一旦将程序集放置到客户机上的应用程序下载缓存中,就可以从程序集加载和运行类.这包括所有必需的窗体(窗体也是一个类).或所有其他属于应用程序的对象.我们可以查看下载了哪些程序集:
> gacutil /ldl 此命令行可以查看客户机上下载程序集清单
应用程序由从WEB服务器加载的窗体控制,它可以根据需要执行操作和加载其他的窗体.如果从同一个程序集加载另外的窗体,那些窗体会自动加载而不需要任何特殊逻辑.
当.NET 在下载缓存中查找程序集时,如果找到了,那么它会检查程序集的版本.同时还在WEB服务器上检查相同程序集的当前版本(如果internet连接可用).如果在WEB服务器上存在程序集的新版本,则将该新版本下载缓存并代替原来的版本以进行使用.这使得自动部署会自动执行.
如果应用程序脱机模式(internet不可用).那么将会跳过当前版本测试.并在下载缓存中使用原来版本.