• 用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

  • 相关阅读:
    Transaction And Lock--使用资源锁来控制并发
    曲演杂坛--页拆分
    维护建议--文件和文件组
    维护建议--开发设计
    维护建议--服务器磁盘
    维护建议--数据库备份
    TSQL--查找连续登陆用户
    shell脚本传递带有空格的参数的解决方法
    oozie无法识别hadoopHA中的ns1
    ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/4705138.html
Copyright © 2020-2023  润新知