用C#做成的程序如何打包部署,在其他PC机运行

刚刚接触C#,在linux下面做习惯了c和c++,在本机运行OK后,得瑟的去别的机子,居然运行不了,你妹啊,怎么回事,没有.NET Framework,原来和java类似,.NET Framework相当与c#的虚拟机。装上后FW后,还是运行不起来,报以下错误

我靠,什么鸟情况。用dumpbin -import xxx.exe将所需的dll也拷过去还是不行。难道还要装VS2010才成?坑爹的我拿着vs2010装了半天,装上2010后果然能运行了,这你妹的难不成要用户装开发工具软件,这不对劲啊。果然还是有方法的--程序打包部署。在打包部署的过程中才发现,在界面上用了一个VB控件,这个控件的dll没有拷贝,估计这个拷贝多股就没问题了吧,没试过。先打包。

c#程序打包步骤:

STEP1:新建安装项目

在IAPengi-Win解决方案上增加一个项目:右键解决方案,添加--新建项目--其他项目类型--visual studio install--安装项目(或直接搜索安装项目)

解决方案前后对比:IAPengiCore不用去管,这是用C写的数据引擎算法,做成dll提供给IAPengi-Win调用的。C#打包部署只关心:1.要打包的项目(IAPengi-Win);2.怎么打包或者说怎么建立安装项目(IAPengiSetup)

STEP2:添加必要的文件

1.在“应用程序文件夹”右击 "添加--项目输出--选择IAPengi-Win项目“

2.添加卸载程序,将C:WindowsSystem32中的msiexec.exe复制出来,在“应用程序文件夹”右击 "添加--文件--选择刚才复制出来的这个msiexec.exe”

3.在“应用程序文件夹”右击“添加--文件--选择你的图标*.ico以及自己写的dll,程序配置表等等”

STEP3:创建桌面及卸载快捷方式

1.创建主输出来自***的快捷方式,重命名为IAPengi-Win,属性--设置ico,拖到“用户的程序菜单”,用同样的方法创建快捷方式,拖到“用户桌面”

2.创建卸载程序快捷方式,首先记下本工程(setup工程)的ProductCode,选中setup工程--视图--其他窗口--属性窗口--ProductCode类似:{8D0930FF-63CD-4FBD-94FC-3467C38F579D}

3.创建卸载快捷方式,即msiexec.exe的快捷方式,重命名为“卸载IAPengi-Win”,右键属性窗口,找到有一项叫做Arguments,先填上/X后面粘帖上2中的ProductCode。将快捷方式“卸载IAPengi-Win”添加到“用户的程序菜单”

STEP4:打包.NET Framework

在IAPenginSetup中,项目属性,选择系统必备,选““从与我的应用程序相同的位置下载系统必备组件”,确定

生成,一个setup的程序就可以了,安装到其他机子运行OK.

补充:

程序有两个配置文件,桌面快捷方式的属性中“打开文件位置”是灰色不可用的。以下记录解决办法:

(我的快捷方式指向IAPengi-Win.exe)

1.下载Orca软件:http://download.csdn.net/detail/leo9150285/5267426

2.用orca打开打包程序里的msi文件,IAPengiSetup.msi,找到File选项,找到指向的IAPengi-Win.exe,复制File值(FileVal),下图黄色高亮部分。

3.左边列表找到shutcut选项,找到要改的快捷方式,修改Target的DefaultFeature为 [#FileVal] 这里的FileVal是2.中复制的值,注意前后加上中括号和#号---[#.......]

4.重新卸载,安装下,OK

2013-5-2日补充:

1.为做成安装项目前的程序,确实如我猜测的一样,缺少VB组件的dll文件,这个dll确实很难找,在depends里也没有看到,后来在“项目--属性--发布--应用程序文件”里有找到,贴图如下

2.做成安装项目后,安装--运行exe程序,发现程序运行不正确,很多带e指数的元件算法没有正常执行,一样的程序,没有做成安装项目前和做成安装项目后,运行的结果不一致。我的程序调用dll如下:

IAPengi-Win.exe-----》IAPCore.dll-----》xxx.dll,xxx.dll是其他的系统库。

估计在调用xxx.dll时,没有去调用,但奇怪的是系统没有任何报错提示,搞不懂为什么。

最后的解决办法是,在编译IAPCore.dll的时候,编译选项为静态(项目--属性--c/c++--代码生成--运行库改为MT开头的)

http://blog.csdn.net/leo9150285/article/details/8809454

原文地址:https://www.cnblogs.com/tianciliangen/p/4705138.html