我用的是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应用的。
不知道各位有没有什么指教!
这次自己做了一个测试程序,在公网的服务器上的站点下建立了一个虚拟目录。
服务器的环境是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应用的。
不知道各位有没有什么指教!
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
不明白的就是以前的那个程序可以,我拿来重新发布了一下,一切OK。
而就是这个程序不行,今天怀疑是IIS默认站点的关系,因为以前是发布到IIS默认站点,而现在出问题的程序是发布到非默认站点。
于是把发布路径改到默认站点下,结果还是不行。
怀疑是权限方面的问题,比较了以前成功发布的和现在出问题的web服务器上的情况,没有什么区别。
现在的程序无论怎么发布都是如下错误:
未能连接到“http://域名/maptest_setup/”,出现以下错误: 无法创建网站“http://域名/maptest_setup/”。 服务器错误: 'maptest_setup' 未引用此站点中的网页或文件夹。它可能是某一子站点中的网页或文件夹,也可能是格式错误的 URL。
在同一台电脑上,我发布以前写的一个winform程序,就ok。当然是发布到不同的web服务器目录上去的。
快疯了!有人救救吗?
未能连接到“http://域名/maptest_setup/”,出现以下错误: 无法创建网站“http://域名/maptest_setup/”。 服务器错误: 'maptest_setup' 未引用此站点中的网页或文件夹。它可能是某一子站点中的网页或文件夹,也可能是格式错误的 URL。
崩溃中......继续尝试!望高手也来指导一下吧!
天杀的,微软也没有什么帮助和文档提到这个限制啊!
好歹是解决了。
感谢各位参与了!