十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
上级目录不可以,但是为了保证程序路径改变,引用不会被破坏。可以有几个方法:
创新互联公司2013年至今,先为平和等服务建站,平和等地企业,进行企业商务咨询服务。为平和企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
1.将DLL文件放在程序同级目录
2.将DLL文件放在程序子目录
3.将DLL文件放在System32目录下(系统目录,可以直接引用DLL)
4.可以将DLL文件打包成资源文件,融合到EXE程序中,每次执行判断同级目录是否有DLL文件,不存在,释放资源文件。
打包的具体操作步骤:
1)新建“安装和部署项目”-- “安装向导”
2)选择菜单中 项目-- 添加-- 文件(这里选“创建用于windows应用程序.exe你的数据库文件”)-- 打开
3)一般会自动将依赖项添加到“检测到的依赖项”,如果没有,那么我们要手动将其加入4)
Crystal_Managed2003.msm (如果有水晶报表)
dotnetfxredist_x86.msm (.net一定是必须的)
... (如果有引用其他的dll)
4)手动加入要包含的文件:项目-- 添加-- 合并模块(添加你的程序文件) (包括dotNetFramework和MDAC27)
位于:C:\Program Files\Common Files\Merge Modules\ 下
具体功能如下:
(托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间)
* Crystal_Managed2003.msm、
Crystal_Managed2003_chs.msm、
(对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。)
* Crystal_Database_access2003.msm、
Crystal_Database_access2003_chs.msm、
(KeyCode MSM 处理 Crystal Decisions 密钥号码的安装,注意是添加合并模块,否则没有“MergeMouduleProperties”属性)
* Crystal_regwiz2003.msm、
(是vc的运行库,估计是Crystal Report或涉及到的某些程序是用vc写的,所以需要它!)
VC_User_CRT71_RTL_X86_---.msm、
VC_User_STL71_RTL_X86_---.msm、
5)打开解决方案-- 右键点击Crystal_regwiz2003.msm的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)
6)生成解决方案(或直接按Ctrl+Shift+B)
至此整个分发程序已经做好,再把刚才做的那个安装程序双击一下……
-----------------------------------------------------------------------
打包时加入卸载功能:
方法一:
1.在打包项目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到)
2.在文件系统视图中选择应用程序文件夹,在msiexec.exe上按右键,选择创建快捷方式,重命名快捷方式为 "卸载 ".
3.更改此快捷方式的Arguments 为 "/x {产品id} ",产品id的值为打包项目的ProductCode属性值.
方法二:(推荐)
1.先生成安装包,记下ProductCode,下面要用到
2.用VS.net建立一个新的控制台程序uninst.exe文件
'power by: landlordh
'for 2000,xp,2003
Module uninstall
Sub Main()
Dim myProcess As Process = New Process
If System.Environment.OSVersion.ToString.IndexOf( "NT 5 ") Then
myProcess.Start( "msiexec ", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559} ") '改为自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
3.将控制台程序BIN目录的exe文件加入到打包程序文件中,在程序组创建uninst.exe的快捷方式
如果装个ms的控件的话,则直接把framework和msac打在包里。
dll文件可以直接引用进去啊,你打开引用文件,直接引用进去就好了,是在程序引用里面,本身就融合在exe文件里,何必放在Resource目录下,画蛇添足。
一些特定的文件,如DB格式、Cab格式、图片格式直接放在相对目录下不就好了,不然你要开发一个稍微像样点的软件根本没办法打包给别人,资源包和检测安装包你怎么给别人打包安装嘛?Resource目录是针对ASP.NET WebForm程序,MapPath的方法可以直接取得资源目录。WinForm考虑他的项目移植性,你直接做安装包就好了,安装资源文件到哪个位置应该由客户自己来定。
dll本身就是封装好的代码,可以直接引用编译,不属于资源文件行列。
第三方控件也不是什么耻辱的事情,大部分成功的软件都是自己开发第三方控件,你用微软自带的控件根本满足不了市场需求,仅仅维持一个学习层次。