winform程序安装在客户机上双击word没反应不反应怎么回事?

做客户端管理系统用 WinForm 还是 WPF ? 请给我一个理由!
[问题点数:40分,结帖人u]
做客户端管理系统用 WinForm 还是 WPF ? 请给我一个理由!
[问题点数:40分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2014年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第四
2009年2月 .NET技术大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。页面导航:
→ 正文内容 禁止缓存文件
asp.net(C#)禁止缓存文件不让文件缓存到客户端
IIS会按文件地址及参数将文件缓存到客户端,以便再次访问该内容时速度更快,下面为大家介绍C#禁止缓存文件的方法
IIS会按文件地址及参数将文件缓存到客户端,以便再次访问该内容时速度更快。如果要取消这种机制则需要禁止缓存文件。
一、编程方式
Response.Buffer =
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
Response.Expires = 0;
Response.CacheControl = "no-cache";
二、代码方式
&%@ OutputCache Duration="1" varybyparam="none" Location= "None" %&
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910在部署一个vs2008环境下的Winform应用程序时,因为引用一个Html编辑器,而用到了Microsoft mshtml.dll程序集,版本为7.0.3300.0,对应文件在E:\Vs2008的安装目录\Visual Studio Tools for Office\PIA\Office11\Microsoft.mshtml.dllE:\Vs2008的安装目录\Visual Studio Tools for Office\PIA\Office12\Microsoft.mshtml.dll添加项目引用时可以在GAC程序集里选择,因为在安装Visual Studio Tools for Office时已经对该组件进行注册,并部署到GAC里。程序运行在本机无错误。部署到客户端,注:客户端没有vs200X开发环境。,结果运行出错,提示:System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---&
System.IO.FileNotFoundException: 未能加载文件或程序集“Microsoft.mshtml,
Version=7.0.3300.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 默认引用属性改为:复制本地=True特定版本= 问题依然出现。直接复制dll到客户端依然出错。后来看到一篇文章,说是重新生成一个mshtml.dll的版本,可以部署。 大意是:因为 Microsoft.mshtmal.dll 这个 dll 是从 system32 文件夹下的 mshtml.tlb(COM
类型库文件)中导出的,因此我们只需要用 VS2008 自带的 TlbImp.exe COM 类型库导出工具将这个 tlb
文件再导一遍就可以了。我使用下面的脚本进行导出: tlbimp mshtml.tlb /out:mshtml.dll
最后得到一个 mshtml.dll 程序集文件,将我们项目中引用的 Microsoft.mshtmal.dll 替换为
mshtml.dll,再打包时这个 dll 就可以被添加到安装项目中了。 试了下,没有成功,后来想了一下,应该不需要这样,因为本机可以运行,说明dll是可用的,只是在部署到客户端时无法识别该程序集而已。&于是在重新添加新的引用时,观察了一下引用界面,发现有三个mshtml,而不是两个。于是尝试添加第三个,&& 并将默认引用属性改为:复制本地=True特定版本= &&在安装部署程序中添加主程序下\bin\Microsoft.mshtml.dll,编译时已复制到bin下。部署到客户端,OK!这个文件比较大,有7.63M,安装部署程序压缩后也有1.7M。所以也有一种轻巧的替代方案,只有100多K,请参看, &
阅读(...) 评论()下次自动登录
现在的位置:
& 综合 & 正文
用Setup Factory打包基于.Net的WinForm程序
制作安装,无非是复制文件、注册控件、注册服务、修改设置项(注册表、配置文件)等等。通过一些专门的安装制作软件不难做出一个专业的安装程序。
.net下的WinForm程序,制作安装包需要做些什么呢?典型情况下可能需要做如下事情:
1、判断客户机是否安装了.net framework
2、复制程序文件
3、将某些控件加入到全局应用程序缓存(GAC),比如第三方的控件或是自己定义的具有强名称的控件
4、安装时的默认设置项,比如程序的配置文件、或修改注册表等
5、创建快捷方式、软件的卸载
制作安装程序的工具比较多,常见的比如InstallShield、Wise Install、以及VS本身自带安装程序制作功能,前2个都是专业级的安装制作工具,所以安装文件也是巨大。这里我们推荐一款制作安装程序的软件Setup factory7.0,使用这个软件能够轻松的制作出一个专业的安装程序,它内置一种跟VBS类似的脚本语言,通过编写action脚本,能够实现比较强大的一些,比如从网上下载一些需要的安装文件。
对于Setup factory7.0的一般性使用这里就不详细介绍了,自己稍微摸索一下就知道了。我只介绍一下关于如何判断是否安装了.net framework及自动下载框架的安装文件并安装、如何修改注册表项、自定义安装界面等。
1、如何判断是否安装了.net framework
这里是判断注册表中是否存在框架的注册项。需要在Setup factory中的工程-操作的OnStartup事件中写如下:
--判断是否安装了.net框架hasInstalled = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software//Microsoft//.NETFramework");if hasInstalled == false then result = Dialog.Message("安装提示", "运行本软件需要安装.Net框架1.1版,是否从网络中下载并安装?", MB_YESNO, MB_ICONQUESTION, MB_DEFBUTTON1) if result == IDYES then
isExists = HTTP.TestConnection("/fdown/uploadfile/dotnetfx.exe", 90, 80);
if isExists == true then
-- Show the StatusDlg
StatusDlg.Show(MB_ICONINFORMATION, false);
StatusDlg.ShowCancelButton(true, "取消");
-- Set statusdlg title and message
StatusDlg.SetTitle("下载所需文件 . . . ");
-- Set meter range (max range = 65534)
StatusDlg.SetMeterRange(0, 100);
-- Download a file from the internet to the user's computer
-- Uses DownloadCallback() as the callback function
HTTP.Download("/fdown/uploadfile/dotnetfx.exe", SessionVar.Expand("%TempFolder%//dotnetfx.exe"), MODE_BINARY, 20, 80, nil, nil, DownloadCallback);
-- Hide the StatusDlg
StatusDlg.Hide();
Shell.Execute(SessionVar.Expand("%TempFolder%//dotnetfx.exe"), "open", "", "", SW_SHOWNORMAL)
Dialog.Message("错误提示", "下载文件失败,可能服务器已停止服务。请从Microsoft网站上下载.Net Framework1.1。", MB_ICONEXCLAMATION);
Application.Exit(0);
Application.Exit(0); endend
-- Callback function for HTTP.Downloadfunction DownloadCallback (nDownloaded, nTotal, TransferRate, SecondLeft, SecondsLeftFormat, Message)
-- Convert total and downloaded bytes into formatted strings
sDownloaded = String.GetFormattedSize(nDownloaded, FMTSIZE_AUTOMATIC, true);
sTotal = String.GetFormattedSize(nTotal, FMTSIZE_AUTOMATIC, true);
-- Output time left, formatted.
StatusDlg.SetMessage("正在下载文件 . . . 剩余时间: " .. SecondsLeftFormat);
-- Output formatted sizes to user through statusdlg status text
StatusDlg.SetStatusText("已下载: " .. sDownloaded .. " / " .. sTotal);
-- Set meter position (fraction downloaded * max meter range)
StatusDlg.SetMeterPos((nDownloaded / nTotal) * 100);end
2、操作注册表
在定制安装界面中,可以添加一个界面,选择界面类型,并且能够自定义界面上的操作事件,比如在OnPreload、OnNext、OnBack、OnCancel、OnHelp编写脚本以实现特定的功能,下面的代码是实现在自定义的配置设置界面中用户填写完配置信息后,点“下一步”时,将填写的信息写入到注册表,其中CTRL_EDIT_01等为编辑控件(这里是文本框)的ID。
-- 这些操作在点击“下一步”按钮时执行。-- 提示:你可以在这里添加验证用户输入信息的操作Registry.CreateKey(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem");tEditFieldServer = DlgEditField.GetProperties(CTRL_EDIT_01);tEditFieldDBUser = DlgEditField.GetProperties(CTRL_EDIT_02);--Debug.ShowWindow( true );
Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "ServerName", tEditFieldServer.Text, REG_SZ);Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "DBUser", DlgEditField.GetProperties(CTRL_EDIT_02).Text, REG_SZ);Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "DBPwd", DlgEditField.GetProperties(CTRL_EDIT_03).Text, REG_SZ);Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "DBName", DlgEditField.GetProperties(CTRL_EDIT_04).Text, REG_SZ);
Debug.Print(tEditFieldServer.Text);test = Registry.GetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "ServerName", true);Debug.Print(test);-- 进入下一个屏幕Screen.Next();
Setup factory是一种比较强大而简单的安装制作软件,大家可以好好研究一下,一定能够实现你想要的功能!
Setup Factory 是一个强大的安装程序制作工具。提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序。可建立快捷方式,也可直接在 Windows 系统的注册表加入内容,还能在 Win.ini 和 System.ini 内加入设定值,更可以建立反安装选项等等。它内附的向导可以一步步的带领您做出漂亮又专业的安装程序。
&&&&推荐文章:
【上篇】【下篇】c#不安装Oracle客户端连接Oracle - 悉野 - 博客园
随笔 - 156
本文所讲的连结oracle是用的.net自带的System.Data.OracleClient&(.net 3.5 2.0 添加引用后有, 4.0不再有了) 就是复制dll, 连结串写完整.&View Code&using&System.Dusing&System.Data.OracleC///&&summary&&&&&&&&&///&执行查询语句,返回DataSet&&&&&&&&///&&/summary&&&&&&&&&///&&param&name="SQLString"&查询语句&/param&&&&&&&&&///&&returns&DataSet&/returns&&&&&&&&&public&static&DataSet&Query(string&connectionString,&string&SQLString)&&&&&&&&{&&&&&&&&&&&&using&(OracleConnection&connection&=&new&OracleConnection(connectionString))&&&&&&&&&&&&{&&&&&&&&&&&&&&&&DataSet&ds&=&new&DataSet();&&&&&&&&&&&&&&&&try&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&connection.Open();&&&&&&&&&&&&&&&&&&&&OracleDataAdapter&command&=&new&OracleDataAdapter(SQLString,&connection);&&&&&&&&&&&&&&&&&&&&command.Fill(ds,&"ds");&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&catch&(OracleException&ex)&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&throw&new&Exception(ex.Message);&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&finally&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&if&(connection.State&!=&ConnectionState.Closed)&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&connection.Close();&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&return&&&&&&&&&&&&&}1.到解压后的dll来复制到你的exe文件夹中.(&&支持多国语言,&&只支持英文, 高版本的oracle client可连结低版本的oracle)
& &(或者如果你本机安装个oracle客户端,&可以在oracle客户端文件夹搜索下*oci*.dll(oci是oracle call interface)文件, 搜索的全部dll复制到你的exe文件夹中, 网上常的复制dll就是这几个dll吧)
2.连结字符串要写成(可以写到配置文件中的, 就是要写直实的地址, 端口,实例,用户名,密码)
private static string CONNECTION_STRING =
"User Id=myUserID;Password=myPData Source=(DESCRIPTION=" +
"(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=yourPort#))" +
"(CONNECT_DATA=(SID=yourSID)));";
这样就不用去读取安装客户端的tnsnames.ora中配置了&
注意: 在编程, 要把刚上面的dll放到你的debug或release目录下, 就是与exe文件同目录, 不然找不到文件, 各种出错.

我要回帖

更多关于 双击word没反应 的文章

 

随机推荐