C# 打包

 

转自 http://www.cnblogs.com/wenlin1234/archive/2008/01/16/798737.html

 

1.在机器上安装PluginInstaller.msi,安装完后编译打包项目可以将.NET Frameworkt 和 语言包打到安装包中.可

以从http://www.microsoft.com/downloads/details.aspx?FamilyID=627921a0-d9e7-43d6-a293 -

72f9c370bd19&DisplayLang=zh-cn上下载该文件.


2.创建一个安装项目 文件->新建->项目->安装和部署项目->安装项目 名为"Setup"


3.在解决方案资源管理器中的解决方案"Setup"上右键->添加->现有项目->添加你的项目,


4.在Setup上右键->添加->项目输出->主输出 这样会自动的把项目需要的基本文件添加到应用程序文件夹中,然后在应用程序文件夹添加你在程序中所需要的图片,应用程序等文件.

 

5.然后按照如下操作来添加模块
(1)一般会自动将依赖项添加到“检测到的依赖项”,如果没有,那么我们要手动将其加入4)
Crystal_Managed2003.msm     (如果有水晶报表)
dotnetfxredist_x86.msm      (.net一定是必须的)//默认不用.
...                         (如果有引用其他的dll)
 
(2)手动加入要包含的文件:项目-->添加-->合并模块(添加你的程序文件) (包括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

(如果报表文件使用了 ADO.NET 的 dataset 数据集对象,那么 VC_User_CRT71_RTL_X86_---.msm 和

VC_User_STL71_RTL_X86_---.msm 模块也必须包含在安装工程中。
而且这两个模块的文件安装属性的"Module Retargetable Folder"项必须修改成为系统目录)
  VC_User_CRT71_RTL_X86_---.msm
  VC_User_STL71_RTL_X86_---.msm
  (很多人经常出现查询错误,不妨加上这个)
(3)打开解决方案-->右键点击Crystal_regwiz2003.msm的属性,在“MergeMouduleProperties”里的“License

Key”填入密码(这个是你生成Crystal Report是用到的注册号的密码!)

 

6.卸载有两种方法
  (1)自己编一个卸载程序,代码如下:
       /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   System.Diagnostics.Process.Start("msiexec","/X{C4A3986F-EA12-4194-BB8B-

A9777E78A6ED}");
   Application.Exit();
   //Application.Run(new Form1());
  }
//{C4A3986F-EA12-4194-BB8B-A9777E78A6ED}为安装程序的ProductCode.
然后将可执行文件加入到应用程序文件夹中,在卸载项上指向它即可.
  (2)在打包项目中应用程序文件夹中添加文件c:\windows\system32\msiexec.exe。
创建此程序的快捷方式,改此快捷方式Argmuments为“/x {产品ID}”,产品ID的值为打包项目的ProductCode属性

值,如: /x {C4A3986F-EA12-4194-BB8B-A9777E78A6ED}。
注意是安装程序的ProductCode,而非目标程序的, ProductCode在项目文件中可以找到。
    在系统有问题的操作系统上有时候卸载不了.

 

7.Setup部署项目属性中的manufacture,productname决定安装的路径名.如C:\Program

Files\manufacture\productname

 

8.生成解决方案(或直接按Ctrl+Shift+B)
其更全的操作请到如下查看:
http://www.microsoft.com/china/MSDN/library/netFramework/netframework/VCSdnnetdepvsredistdeploy.mspx

?mfr=true
http://www.java-asp.net/aspnet/200601/t_49903.html
部署.net平台的程序

郑 佐2005-5-31

         部署用.net写的程序时客户系统需要安装对应版本的.net Framework,而VS.NET自带的安装程序项目没

有提供一起打包框架的功能,这一点让许多开发者觉得不爽,在csdn论坛上也有人提及如何方便的把.net程序部署

到没有安装框架的windows系统上。几个月前下载了MicrosoftVisual Studio .NET 2003 引导程序插件(其实这个

微软早在2003年底已经提供了,但是我一直没有发现)。前段时间把这个插件安装了一下,发现vs.net 2003的菜单

和工具栏里面都没有找到对应的命令,觉得很奇怪,因为像WMI的vs.net2003插件安装上后在服务器资源管理器里

面就会显示,所以一直以为有问题,后来也就没有去关心它。

上个月,我手上刚好有一个.net应用程序完成需要打包,结果惊奇的发现在安装文件的同级目录下一下子多出了好

几个文件,终于明白是怎么一回事了。

下面是编译后的文件列表:

Config.ini            --安装配置文件

DotmanagementServer Installer.msi         --msi安装程序

dotnetfx.exe         --.net1.1 framework

langpack.exe        --语言包

Settings.ini          --设置文件

Setup.exe             --主安装程序

 

Config.ini文件的内容如下:

[config.ini]

IDS_NOT_SINGLE_INSTANCE=已有另一版本的安装程序正在运行。 该应用程序一次只能运行一个版本。

IDS_DIALOG_CAPTION=%s安装

IDS_SINGLE_INSTANCE_FAIL=CreateMutex无法对单个的实例检查分配句柄。

IDS_SETUP_FAILURE=%s安装失败。如果问题继续存在,请与产品支持人员联系。

IDS_DEFAULT_PRODUCTNAME=应用程序

IDS_SETTINGS_INIT_FAILURE=安装设置文件'%s'在解析时出错,或者无法定位该文件。

IDS_CREATE_PROCESS_FAILURE=下列命令行的 CreateProcess 操作失败: %s 。

IDS_INSUFFICIENT_PRIVILEGES=运行 %s 安装程序要求具有本地系统管理员的权限。安装程序现在退出。

IDS_DIALOG_TEXT=单击“确定”开始安装 %1 。单击“取消”退出安装。

IDS_ERROR_CAPTION=%s安装错误

IDS_VERSION_DETECT_FAILED=%1的版本检测失败。请确保安装程序存在于指定位置。%n%n返回消息: %2

IDS_MSI_NOT_FOUND=无法定位产品安装程序'%s'。安装程序现在退出。

IDS_REBOOT_QUERY=安装完成。现在重启吗?

IDS_SETUP_SUCCEEDED=安装成功。

IDS_INVALID_LANGID_CAPTION=无效的语言包代码

IDS_FX_NOT_FOUND=无法定位 .NET framework exe 文件'%s'。安装程序现在退出。

IDS_INVALID_LANGID_MESSAGE=语言包代码 %s 无效。跳过...

IDS_LANGPACK_NOT_FOUND=无法定位语言包 %s。安装程序现在退出。

IDS_MDAC_NOT_FOUND=无法定位 MDAC exe 文件'%s'。安装程序现在退出。

IDS_FILE_NOT_FOUND=无法定位'%1'。安装程序现在退出。

 

Settings.ini文件内容如下:

[Bootstrap]

MsiPath=DotmanagementServerInstaller.msi

ProductName=服务聚合处理管理系统

MdacVersion=2.71

BootstrapFx=true

FxInstallerPath=

LanguageID=2052

BootstrapLangPack=true

LangPackInstallerPath=

BootstrapMdac=false

 

我在微软的VirtualPC 上的windows2000中对该程序进行了部署,整个安装过程如下:

点击安装程序 > 提示确定开始安装,取消推出安装 > 系统没有安装.net Framewrok提示是否希望安装

Mircrosoft .NET Framework 1.1软件包 > 没有安装IE 5.01或更高版本提示先安装IE高版本 > .NET Framework

1.1安装 > 提示安装Microsoft .NET Framework语言套件 > 安装应用程序向导 > 提示安装成功。

点击程序运行,一切象预想的那样。相信许多人已经在使用了,但更多人可能没有用过这个傻瓜式的插件。

网上在.net程序部署方面有许多相关的文章,下面几篇我认为是比较好的:

自定义 MSI 安装

http://www.microsoft.com/china/msdn/library/langtool/vsdotnet/usvs04j7.mspx

把.NET程序部署到没有安装.NETFramework的机器上

http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/deployNETApp.mspx

部署ASP.NET的三大技术

http://tech.ccidnet.com/pub/article/c295_a68309_p1.html

使用 Visual Studio .NET 重新分发 .NET 框架

http://www.microsoft.com/china/msdn/library/netFramework/netframework/VCSdnnetdepvsredistdeploy.mspx

部署程序集

http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misbasicinstincts.mspx

在VS.NET中通过Setup andDeployment Projects来制作自己的安装程序的示例:

http://msdn.microsoft.com/library/en-us/vsintro7/html/vbconDeploymentScenarios.asp

### C# 项目打包的方法及教程 C# 编程完成后,通常需要将编写的程序打包以便分发给其他用户运行。以下是几种常见的 C# 打包方法及其具体操作说明。 #### 方法一:使用 Visual Studio 的内置功能 Visual Studio 提供了一种简便的方式用于发布和打包 C# 应用程序。通过以下步骤可以快速完成项目的发布: - **生成发布文件** 在 Visual Studio 中打开目标项目后,进入菜单栏中的“生成”选项卡,选择“发布”。首次执行此操作时会出现一个向导界面,按照提示逐步填写必要信息并确认默认设置即可[^2]。 - **获取 publish 文件夹** 完成上述步骤后,会在本地目录下自动生成名为 `publish` 的文件夹,其中包含了所有必要的安装文件以及可执行的 `.exe` 文件。这些文件可以直接复制到目标机器上进行部署。 #### 方法二:利用 Inno Setup 工具 对于希望进一步简化流程或者定制化程度更高的开发者来说,第三方工具如 Inno Setup 是不错的选择。该工具有如下特点: - 开源且完全免费; - 支持多种高级配置需求; - 用户界面直观友好,几分钟内便可掌握基本用法[^1]。 ##### 使用指南 1. 下载并安装最新版 Inno Setup; 2. 创建一个新的脚本工程; 3. 将已有的应用文件拖拽至指定区域; 4. 设置好各项参数(例如名称、版本号等),保存退出; 5. 启动编译过程,等待片刻便能得到最终产物——单一 EXE 文件形式的应用安装包。 #### 方法三:借助 ClickOnce 技术 ClickOnce 是微软专门为 .NET 平台设计的一种自动化部署解决方案,特别适合于频繁更新的小型桌面应用程序。其主要优势在于能够自动检测新版本并向客户端推送升级通知[^3]。 不过需要注意的是,由于依赖特定环境支持的缘故,部分场景可能并不适用这种技术路线。 #### 方法四:手动构建安装器 如果以上方案都不能满足特殊业务逻辑的要求,则还可以考虑采用更为底层的手动方式来组装整个安装包结构。这涉及到以下几个核心环节: - 添加主程序输出项; - 创建指向主入口点的快捷链接对象; - 设定图标资源路径等等[^4]^,^[^5]。 ```csharp // 示例代码片段展示如何动态加载外部库 [DllImport("kernel32.dll", SetLastError = true)] static extern IntPtr LoadLibrary(string lpFileName); ``` 尽管这种方法灵活性最高但也相应增加了复杂度和技术门槛,因此仅建议经验丰富的程序员尝试实践。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值