zoukankan      html  css  js  c++  java
  • ClickOnce安装部署,手动。

    ClickOnce 使用 Microsoft Windows Installer 部署,每次应用程序更新,用户都必须重新安装整个应用程序;使用 ClickOnce 部署,则可以自动提供更新。只有更改过的应用程序部分才会被下载,然后从新的并行文件夹重新安装完整的、更新后的应用程序。

    首先配置IIS   在控制面板--管理工具--Internet 信息服务(IIS)管理器

    在网站下面新建一个然后新建虚拟目录和应用程序 注:这里的网址需要放到发布上的

    在需要发布上的项目上的属性--发布 上面有两个地址。填刚刚的。

    系统必备里面的地址改下,更新里面也改下 然后发布。

    发布成功后去刚刚选择的文件夹下看看有没有文件,

    存在文件。就直接拿到SetUp(安装的类库)Debug下的EXE运行就OK      具体SetUp的安装的代码如下:

    using System.Deployment.Application;
    
    var deployManifestUriStr = "http://192.168.1.111:8021/Allsworth.TCMS.Client.Shell.application"; //前面部分是地址,后面是你创建webService文件夹下带application的文件的名字
    
    Uri deploymentUri = new Uri(deployManifestUriStr); //给一个路径它。到网上去下载
    
    try
    
    {
    
      var iphm = new InPlaceHostingManager(deploymentUri, false);
    
    }
    
     catch (UriFormatException uriEx)            
    
    {                
    
           Exception ex = new Exception("无法安装应用程序: 部署清单URL提供的不是一个有效的URL。错误: " + uriEx.Message, uriEx.InnerException);                
    
           return;            
    
    }            
    
    catch (PlatformNotSupportedException platformEx)            
    
    {              
    
      Exception ex = new Exception("无法安装应用程序: 这个程序需要Windows XP或更高。错误: " + platformEx.Message, platformEx.InnerException);              
    
          return;            
    
    }            
    
    catch (ArgumentException argumentEx)            
    
    {          
    
              Exception ex = new Exception("无法安装应用程序:部署清单URL提供的不是一个有效的URL。Error: " + argumentEx.Message, argumentEx.InnerException);    
    
              return;            
    
    }
    
    iphm.GetManifestCompleted += new EventHandler<GetManifestCompletedEventArgs>(iphm_GetManifestCompleted);    //     部署清单已下载到本地计算机时发生。
    
    iphm.GetManifestAsync();//2:通过使用 GetManifestAsync 下载部署清单。
    
     
    
     void iphm_GetManifestCompleted(object sender, GetManifestCompletedEventArgs e)        
    
    {            
    
               if (e.Error != null)            
    
           {                 
    
            Exception ex=new Exception( "不能下载清单。错误: " + e.Error.Message);
    
             return;            
    
         }
    
                try            
    
        {                
    
          //真正的参数允许InPlaceHostingManager      
    
            / / 确定 ClickOnce 应用程序是否具有合适的权限和平台依赖项,以便在本地计算机上运行。
    
         / /如果为 true,应用程序将尝试将其权限提升至所需级别。       
    
                  iphm.AssertApplicationRequirements(true);  
    
                }
    
                catch (Exception ex)            
    
        {                
    
          Exception exception = new Exception("验证应用程序时发生错误。" + ex.Message,ex.InnerException);                 
    
           return;            
    
        }
    
                // 下载部署清单。            
    
              iphm.DownloadProgressChanged += new EventHandler<DownloadProgressChangedEventArgs>(iphm_DownloadProgressChanged);  // 更改应用程序或清单下载状态时发生。
    
              iphm.DownloadApplicationCompleted += new EventHandler<DownloadApplicationCompletedEventArgs>(iphm_DownloadApplicationCompleted); //应用程序向本地计算机下载完成时发生。
    
              try            
    
        {                
    
                    //这通常不应该抛出一个异常,除非AssertApplicationRequirements()失败,/ /或者你不调用该方法之前调用。                
    
           iphm.DownloadApplicationAsync();
    
                }            
    
        catch (Exception downloadEx)            
    
         {                
    
          Exception ex = new Exception("不能启动下载的应用程序 .错误:" + downloadEx.Message,downloadEx.InnerException);              
    
                    return;            
    
    }        
    
    }
    
      // 下载时发生
    
       void iphm_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
            {
    
    
                //你可以使用e.ProgressPercentage显示任务完成的百分比
                //e.TotalBytesToDownload   获取下载操作的总字节数。 表示下载总大小(以字节为单位)的 System.Int64。   (e.TotalBytesToDownload / 1024 / 1024).ToString() + "M"
    
        // e.BytesDownloaded 获取下载到本地计算机的字节数。 (e.BytesDownloaded/ 1024 / 1024).ToString() + "M"
            }
    
     //下载完成
    
       void iphm_DownloadApplicationCompleted(object sender, DownloadApplicationCompletedEventArgs e)         
    
      {            
    
        //检查一个错误。             
    
        if (e.Error != null)             
    
        {                
    
            //取消下载并安装              
    
             Exception ex = new Exception("无法下载和安装应用程序。错误: " + e.Error.Message);                 
    
              return;             
    
        }
    
            }

       

  • 相关阅读:
    并发的简单介绍1
    UITableView (4): 在TableView中移动cell和Section 从TableView中删除cell和section 添加系统默认刷新控件
    UITableView (3):显示cell上的菜单
    TableView(2)
    UITableView (1)
    在 Interface Builder 中配置自动布局的约束
    Velocity 的工作原理
    ORA-01858: a non-numeric character was found where a numeric was expected
    Java 8:不要再用循环了
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/wlwenjie/p/4441132.html
Copyright © 2011-2022 走看看