我用的是vs2008,我之前用ClickOnce发布过Winform应用,可以的。
这次自己做了一个测试程序,在公网的服务器上的站点下建立了一个虚拟目录。
服务器的环境是iis6+.netframework3.5sp1+Server extensions 2002
客户端Winform应用是基于.netframework3.5sp1的
在发布里面填写了如下内容
发布文件夹位置:http://站点域名/maptest_setup/
其他都是默认的
而后按立即发布,生成发布成功,连接发布失败
失败信息如下:
未能连接到“http://域名/maptest_setup/”,出现以下错误: 无法创建网站“http://域名/maptest_setup/”。 服务器错误: 'maptest_setup' 未引用此站点中的网页或文件夹。它可能是某一子站点中的网页或文件夹,也可能是格式错误的 URL。而这个URL肯定是对的,因为我能访问http://域名/maptest_setup/a.html页面。
而且服务器我有管理员密码,帐号密码不会错的。以前在别的服务器上我用那台服务器的管理员密码成功发布过别的ClickOnce应用的。
不知道各位有没有什么指教!

解决方案 »

  1.   

    http://www.cnblogs.com/zhouxiaxue/archive/2006/12/30/607874.html
      

  2.   


    http://blog.oracle.com.cn/155011/viewspace_3603.html
     
    一、部署步骤
    1.      创建一个WinForm程序
    1.1        打开VS2005,新建一个WinForm项目。
    1.2        做一个简单的Form,运行成功。
    2.      发布程序
    2.1 在项目上点右键选择“属性”,会看到该项目的属性列表。
    2.2左边的目录中选择“发布”,可以看到关于发布的属性。
    2.3首先是发布位置,默认是http://localhost/项目名/,也可以更改,选择 “文件系统”、“本地IIS”、“FTP站点”、“远程站点”中的任意一个子目录。
    2.4 安装模式和设置
    1)      启动方式默认为可以脱机使用,也可以更改为只能联机。
    2)      应用程序文件:
    点击“显示所有文件”可以看到所有应用程序文件以及bin目录下有的文件,系统会自动选择哪些该包括,哪些该排除。如果有必要,可以更改默认设置。
    3)      系统必备:
    选择要安装的系统必备组件,安装位置可以选择供应商网站、应用程序位置或任意一个URL或UNC路径(例:http://www.microsoft.com/myapplication或\\server\myapplication)。
    4)      更新:
    可以在这里设置应用程序是否应该检查更新、在何时检查更新,指定更新的频率,指定更新的最低版本,指定更新位置等。
    5)      选项:
    指定发布语言、发行者名称、产品名称、部署网页等发布相关的选项。
    2.5 发布版本:
    显示该次发布的版本号,可以修改,默认每次发布修订号自动递增。
    2.6 发布:
    可以通过“发布向导”或选择“立即发布”。发布成功后默认打开发布页,可以从此页面安装程序。一次安装后,会自动在程序目录下加一个快捷方式。如果发布时更新选择了自动更新,那么每次打开程序前(或程序后,可设置)会自动检查是否有更新的版本,如果有,可以选择更新或跳过。如果跳过了更新,以后要更新就必须到第一次更新的发布页面手动安装更新。当然,这些功能也可以在程序中通过编程实现,在文档后面的内容中会有所提及。
    3.      安装
    在本机或其他任意一台可以访问到发布网页的机器上打开IE,访问发布页安装程序。
    4.      删除、还原
    在“控制面板”中选择“添加或删除程序”,找到程序点击“删除”,可以选择还原到上一个版本的程序或是删除程序。
    二、实例
    1.      新建项目“DemoClickOnce”。
    1.1 新建窗体frmIE_Load,向窗体中添加几个控件
    grpTop:GroupBox,txtAddress:TextBox,btnLink:Botton,webBrowser1:WebBrowser
    1.2 双击窗体,在frmIE_Load事件中输入代码:
    txtAddress.Text ="http://tangtang.oracle.com.cn";
    1.3 双击btnLink,在btnLink_Click事件中输入代码:
    webBrowser1.Url =newUri(txtAddress.Text.Trim());
    webBrowser1.Update();
    1.4 运行程序,画面如下:
    2.      发布项目
    2.1   设置发布相关的属性,发行者名称为candy,产品名称为clickOnce,其他全部用默认。
    2.2   点击立即发布,发布成功后自动打开发布页http://candisin/DemoClickOnce/publish.htm
    3.      安装
    3.1      在本机或其他任意一台可以访问到发布网页的机器上打开IE,访问发布页http://candisin/DemoClickOnce/publish.htm,机器名candisin可能需要替换为IP地址或其他虚拟域名,点击安装。
    3.2      成功安装后,程序会自动启动。而开始菜单中所有程序目录中会出现一个快捷方式,指向该程序。该程序的默认安装路径通常为:C:\Documents and Settings\candisin\Local Settings\Apps\2.0\0E6XTHOH.A0J\6DEOBQLW.B2K。
    4.      版本更新,修改程序
    4.1   向窗体frmIE_Load中添加几个控件/组件:
    picReflash:PictureBox,timerUpdate:Timer,toolTipUpdate:ToolTip
    4.2   增加引用:
    usingSystem.Deployment.Application;
    4.3   增加成员变量:
    ///<summary>
    ///更新标志:0,未检测到更新;1,已检测到更新;
    ///</summary>
    privatestringflagUpdate ="0";
    4.4   增加方法:
    privatevoidUpdateApplication()
    {
    if(ApplicationDeployment.IsNetworkDeployed ==true)
     {
        ApplicationDeploymentad =ApplicationDeployment.CurrentDeployment;
        Text ="当前版本:"+ ad.CurrentVersion;
        toolTipUpdate.SetToolTip(this, Text);
        UpdateCheckInfocheckInfo = ad.CheckForDetailedUpdate();
        if(checkInfo.UpdateAvailable ==true)
        {
          flagUpdate ="1";
          toolTipUpdate.SetToolTip(this,"检测到新的版本:"+ checkInfo.AvailableVersion);
           if(MessageBox.Show("检测到新的版本:"+ checkInfo.AvailableVersion +",现在需要更新吗?\n您也可以稍后手工更新到最新版本!","",MessageBoxButtons.YesNo,MessageBoxIcon.Question) ==DialogResult.Yes)
            {
               ad.Update();
               MessageBox.Show("更新完毕,将要重新启动程序!");
               Application.Restart();
            }
         }
      }
    }
    4.5   增加或修改事件
    privatevoidfrmIE_Load(objectsender,EventArgse)
    {
      txtAddress.Text ="http://tangtang.oracle.com.cn";
      UpdateApplication();
    }
     
    privatevoidpicReflash_Click(objectsender,EventArgse)
    {
       UpdateApplication();
    }
     
    privatevoidtimerUpdate_Tick(objectsender,EventArgse)
    {
       if(timerUpdate.Enabled)
       {
           if(flagUpdate =="0")
           {
               UpdateApplication();
           }
       }
    }
    4.6   运行程序
    5.      二次发布
    6.      客户端更新
    6.1   客户端单击打开程序时,系统会先检测是否有更新的版本,如果有,则弹出页面询问是否下载。
    6.2   选择确定,则自动更新到了新版本。
    6.3   此时,若再有新的更新发布,程序可以自动检测到更新,并询问是否更新到新的版本。
    6.4   需要更新点击“是”则立即更新,更新完后程序会重新启动。还可以点击“否”暂时不更新,之后程序直到关闭都不再自动提醒,需要手工点击刷新图标更新程序。
    三、注意事项
    1.           必备条件:需要安装.Net FrameWork 2.0时
    1.1   在发布属性页中,点击“系统必备”,钩选“.Net FrameWork2.0”,指定安装位置为应用程序相同的位置。
    1.2   成功发布后,客户端如果没有安装.Net FrameWork 2.0,访问发布页面会显示有系统必需的组件
    1.3   点击安装后,首先会安装.Net FrameWork 2.0
      

  3.   

    感谢zzxap的回复,发布的过程我都是知道的,因为我以前也做过这方面的事情。
    不明白的就是以前的那个程序可以,我拿来重新发布了一下,一切OK。
    而就是这个程序不行,今天怀疑是IIS默认站点的关系,因为以前是发布到IIS默认站点,而现在出问题的程序是发布到非默认站点。
    于是把发布路径改到默认站点下,结果还是不行。
    怀疑是权限方面的问题,比较了以前成功发布的和现在出问题的web服务器上的情况,没有什么区别。
    现在的程序无论怎么发布都是如下错误:
    未能连接到“http://域名/maptest_setup/”,出现以下错误: 无法创建网站“http://域名/maptest_setup/”。 服务器错误: 'maptest_setup' 未引用此站点中的网页或文件夹。它可能是某一子站点中的网页或文件夹,也可能是格式错误的 URL。 
    在同一台电脑上,我发布以前写的一个winform程序,就ok。当然是发布到不同的web服务器目录上去的。
    快疯了!有人救救吗?
      

  4.   

    刚才又测试了一下,做了一个最简单的winform应用,就是一个Winform窗口,上面放一个按钮,按一下弹出一个MessageBox。发布一下,还是出相同错误:
    未能连接到“http://域名/maptest_setup/”,出现以下错误: 无法创建网站“http://域名/maptest_setup/”。 服务器错误: 'maptest_setup' 未引用此站点中的网页或文件夹。它可能是某一子站点中的网页或文件夹,也可能是格式错误的 URL。 
    崩溃中......继续尝试!望高手也来指导一下吧!
      

  5.   

    经过N多测试,终于自己找到问题所在。原来,要发布的URL的物理路径,必须在所属的站点的物理路径之下。
    天杀的,微软也没有什么帮助和文档提到这个限制啊!
    好歹是解决了。
    感谢各位参与了!
      

  6.   

    你确定你的机子上装了IIS吗?