C#制作自定义安装程序

(一),安装程序

以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦

第一步:建立工程
1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web安装项目等,安装项目就是普通的桌面程序安装,Web安装就是安装网站,通常安装到IIS下,这里以普通桌面程序安装为例),新建安装项目,命名为SetupTest。

2.新建工程后,可以在“解决方案资源管理器”里面看到子项:文件系统编辑器,注册表编辑器,文件类型编辑器,用户界面编辑器,自定义操作编辑器,启动条件编辑器。下面将会举例来说明各个地方怎么使用。

3.最简单的一个安装程序:点击“文件类型编辑器”,找到“应用程序文件夹”,添加->文件,选择你要打包的程序文件(譬如我的程序有run.exe和lib.dll组成),确定。在项目“SetupTest”上点击生成,一个简单的安装包就做好了。生成后,点击安装,如果没有错误的话,你现在可以看到你的安装包的效果了。

4.如何自定义代码?在制作过程中,这些简单的功能不能满足你的要求,那么就自己写代码来完成吧。

解决方案->添加->新建项目->类库,命名为Library,在项目Library下面,删除Class1.cs,添加->新建项目->安装程序类(名称为InstallerTest.cs),打开InstallerTest.cs,你会发现这个class InstallerTest继承自Installer,里面就一个构造函数。好了,现在安装程序不能完成的功能,你可以在这个类写代码来自己实现了。
    举例:在构造函数里面添上this.BeforeInstall +=
new InstallEventHandler(InstallerTest_BeforeInstall),实现方法InstallerTest_BeforeInstall(object sender, InstallEventArgs e),就可以完成程序在安装之前要做的事情了,Installer主要要用到的事件不外乎这几个:BeforeInstall,AfterInstall,AfterRollback,AfterUninstall,BeforeRollback,BeforeUninstall,很明显的意义,就不用解释了吧

5.完成了4中的InstallerTest_BeforeInstall方法,是不是在安装之前就要执行InstallerTest_BeforeInstall中的代码呢,答案是不行。还要用到“自定义操作编辑器”。项目SetupTest->添加->项目输出->选择Library后确定,你会发现,在项目SetupTest下面多了一项“主输出来自Library(活动)”的字样。好,到正题了,来到“自定义操作”处,可以看到四个子项:安装,提交,回滚,卸载。在安装上面点击右键->添加自定义操作->选择“主输出来自Library(活动)”。这样,重新生成后,安装之前就会执行InstallerTest_BeforeInstall代码了。(当然,如果你在要在卸载前后做一些事情,就必须在“卸载”处也把自定义操作添加进去,否则即使监听了事件AfterUninstall,也不会执行的,完全之策是在安装,提交,回滚,卸载里面都把主输出来自Library(活动)添加进去就不怕了,嘿嘿)

6.如何得到用户所选安装路径?在实现代码的时候,用户所选安装路径大多数情况下都要用到,怎么得到他的值呢?在自定义操作->安装->“主输出来自Library(活动)”上面右键属性,在CustomActionData中填入/targetdir="[TARGETDIR]\", 然后在类InstallerTest中用这句话this.Context.Parameters["targetdir"] 就可以取得安装的目录了。

7.如何得到用户在安装的时候输入的更多的信息?用户在安装的时候,还有可能塡很多其他的信息,比如我以前做的一个安装文件中包含安装数据库,安装的时候用户就要填写数据库密码,用户名等信息。实现如下:用户界面->安装->启动->右键->添加对话框->选择"文本框(A)",可以看到文本框(A)有很多属性,如:Edit1Label,Edit1Property,Edit1Value,Edit1Visible等,Edit1Label就是這個输入框所要输入的内容的提示语,Edit1Value就是所输入的内容。
例如:将Edit1Label内容填上“请输入数据库用户名:”,将Edit1Property内容填上DBUSER,Edit1Visible选问true,另外在6中所提到的CustomActionData中,添加上 /dbuser="[DBUSER]",再在InstallerTest中用这句话this.Context.Parameters["dbuser"] 就可以或得用户在安装的时候所填写的用户名了(其他的单选框,复选框,button按钮框都差不多获取值的方法,不再累赘).总之,添加了一些对话框后,把属性好,还要在CustomActionData添加一个/parm="[属性值]",才能在代码中获取改值。

8.其他:创建快捷方式,你可能在程序中要创建多个快捷方式,这里展示一种写代码的方式来创建快方式(各个选项意义就不说了,其中有些选项是可以不需要的,读者可自己测试选择使用)

添加引用:com名称为Windows Script Host Object Model

using IWshRuntimeLibrary;
string dk = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);//得到桌面文件夹
               
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShellClass();
               
IWshRuntimeLibrary.IWshShortcut shortcut =
(IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(@dk + "\\快捷方式到数据中心SiteDataCenter.lnk");
             
shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(@dk + "\\互联网公共上网服务场所信息安全管理系统.lnk");
                   
shortcut.TargetPath = @"%HOMEDRIVE%/Program Files\Internet Explorer\IEXPLORE.EXE";
                   
shortcut.Arguments = "http://localhost/web/Main.html";//参数
                   
shortcut.Description = "火星网络安全有限责任公司";
                   
shortcut.WorkingDirectory = pathWeb;//程序所在文件夹,在快捷方式图标点击右键可以看到此属性
                   
shortcut.IconLocation = "notepad.exe, 0";//图标

shortcut.Hotkey = "CTRL+SHIFT+N";//热键
                   
shortcut.WindowStyle = 1;
                   
shortcut.Save();

9.如何在安装完成后自动运行某个程序呢(如run.exe)?
将这句代码写在AfterInstall里面:
               
System.Diagnostics.ProcessStartInfo psiConfig = new
System.Diagnostics.ProcessStartInfo(path + "\\run.exe");//path即是安装的目录
               
System.Diagnostics.Process pConfig =
System.Diagnostics.Process.Start(psiConfig);

(二)卸载(以下是转的,看客自己提取有用信息)

1.新建一C# Windows From项目,完成项目的工作

2.菜单-》文件-》添加项目-》新建项-》安装部署项目-》安装向导

选择上面那个项目的主输出。

在安装项目的属性栏中会显示出"XXX部署项目属性",在第一个AddRemoveProgramsIcon属性后"浏览"到你的ICO图标,接着在下面Author输入作者名,也就是你的名字,其他Localization是语言属性,Manufacturer,ProductName的属性将是用户在安装时默认设置的文件夹路径一部分了,设置Title为你的应用程序标题名称。

3.右击"安装项目"上,选择文件系统视图

在应用程序文件夹,添加一个文件,如果是WIN98下的安装,请选择WIN98操作系统目录下的msiexec.exe文件(一般在c:\windows\system目录下);如果是其他,比如WIN2K系列,请选择该操作系统目录下的msiexec.exe文件(一般在\winnt\system32目录下)。

4.在文件系统视图的"用户程序菜单"里,添加一个目录,命名为项目的名字,

并且,在这个目录里,添加一个快捷方式,指向项目的主输出,

再添加一个快捷方式,指向加入的文件Msiexec.exe,命名为:"卸载",

5.在解决方案里,选择安装项目,再打开属性视图,打开安装项目的属性面板,里面有一项:

ProductCode {5284694C-24C1-4FCF-A705-D4B9A0081274}

把后面的{5284694C-24C1-4FCF-A705-D4B9A0081274},复制一下。

6.在"卸载"快捷方式的属性里,有一个叫Arguments的属性栏,在属性栏中首先填入"/x"后加一个空格,再"粘贴",将ProductCode的属性值COPY至此。

7、再在VS.Net的顶部菜单栏中"生成"-"生成 XXXX"(XXXX为你的项目名称)

补充:合并模块项目的使用

若在某个大型的安装程序中,模块飞分为模块1,模块2等,每次都把模块N的文件加进来重新编译就很麻烦,这是就可用“合并模块项目(MergeModule)”。
1.新建一个合并模块项目,名字为MergeModule1,添加需要的文件,生成后,将看到MergeModule1.msm
2.在這個大型的安装程序中,添加“合并模块”,将MergeModule1.msm添加进去
3.生成,安装,你会发现MergeModule1的内容也被安装到了安装目录下

C#制作自定义安装程序

时间: 2024-11-09 17:15:20

C#制作自定义安装程序的相关文章

制作c#安装程序/使用安装服务类自定义安装事件

第一步:建立工程 1.打开vs,新建项目->其他项目类型->安装和部署(),新建安装项目,命名为SetupTest. 2.新建工程后,可以在“解决方案资源管理器”里面看到子项:文件系统编辑器,注册表编辑器,文件类型编辑器,用户界面编辑器,自定义操作编辑器,启动条件编辑器.下面将会举例来说明各个地方怎么使用. 3.最简单的一个安装程序:点击“文件类型编辑器”,找到“应用程序文件夹”,添加->文件,选择你要打包的程序文件(譬如我的程序有run.exe和lib.dll组成),确定.在项目“Se

制作PHP安装程序的原理和步骤56

1.制作PHP安装程序的原理和步骤检查目录或文件的权限----修改或填加配置文件---检查配置文件正 确性---导入数据库----锁定或删除安装文件 原理: 其实PHP程序的安装原理无非就是将数据库结构和 内容导入到 相应的数据库中,从这个过程中重新配置 连接数据库的参数和文件,为 了保证不被别人恶意使用安装文件,当安装完成后需要修改安装文件 .2制作安装用到的PHP函数is_writable(“data/config.php”);is_writable() 检查文件是否可写,用来判断文件权限,

net自定义安装程序快捷方式

创建快捷方式对于绝大多数 Windows 用户来说都是小菜一碟了,然而,这项工作却为程序员带来不少麻烦..NET 没有提供简便直接的创建快捷方式的方法,那么在 .NET 中我们如何为应用程序创建快捷方式呢? 1. 快捷方式文件 快捷方式实质上是一个扩展名为 .LNK 的文件.右击一个快捷方式文件并选择属性,跳到快捷方式选项卡,如图2所示: 你可以看到一个快捷方式包含如下数据: 快捷方式的名字 快捷方式所指向的目标所在的位置 快捷方式所指向的目标的工作目录 激活该快捷方式的热键 快捷方式所指向的目

C# 批处理制作静默安装程序包

使用批处理+WinRAR制作静默安装程序包 @echo 安装完窗口会自动关闭!!! @echo off start /wait Lync.exe /Install /Silent start /wait vcredist_x86/vcredist_x86.exe /q /norestart start /wait DotNetFx40/dotNetFx40_Full_x86_x64.exe /q /norestart start /wait setup.exe /qn 以上批处理命令可以静默安装

使用NSIS制作Windows安装程序快速入门

使用NSIS制作Windows安装程序快速入门 这里使用的NSIS版本为3.04,HM NIS Edit版本为2.0.3. 制作安装程序的过程: 确定安装的功能和界面元素 编写 NSIS 脚本 使用 NSIS 提供的 makensis 或者 makensisw 程序,将步骤 2 编写的脚本编译成可执行的安装程序(点击HM NIS Edit编译按钮) 配置使用 NSIS 的环境 安装 NSIS 安装脚本编辑工具 HM NIS Edit 也可以使用VS Code安装NSIS脚本插件 使用HM NIS

liunx制作deb安装程序:入门

注释:[可选项],(标注),...(省略多个扩展选项) 简要:制作deb文件安装包可在liunx系统中通过命令执行一键安装 快速入门 1 创建软件层级目录 |-(自定义工作目录名称) |-(创建与安装系统位置一致的层级目录,放置安装程序文件或文件夹) ...(可创建多个文件存放点,安装时目录会自动创建) |-DEBIAN(deb安装程序的配置信息存放文件夹) |-control(必要:文本文件,不带扩展名) ... 2 编辑必要的deb配置文件control文件内容如下:(尾行加一个换行符:回车

怎样制作C#安装程序

近期须要制作一个C#安装.在网上找了一些资料发现都不是非常完整,最后自己综合了一些资料,而且通过亲自检測,最后成功完毕C#打包成安装程序(打包成最简单的一种安装程序.假设须要更高的功能请自己在开发). 详细步骤整理例如以下: 该打包过程在vs2008中完毕,但也适用于vs2005.程序是用C#写的. 1.新建安装和部署. 打开你所写的项目.在解决方式上右键->加入->新建项目. 如图:   选择其它项目类型->安装和部署->安装项目. 在名称中把名字改为你所希望的名字,然后确定.如

用 .Net Framework 4.0 制作的安装程序来安装 .Net Framework 4.0 编写的程序

文章题目看起来有点绕,解释一下,假如你基于框架写了一个程序,想装到客户机上,但是客户机上可能并没有安装框架,因此你的程序需要预先将框架安装在目标机上,然后再执行一些安装程序的标准功能,如创建快捷方式.创建程序组.写入卸载信息以便让Windows能够对程序进行卸载管理等,实现这个功能的方法有很多,例如使用InstallShield.Wix Toolset等均可实现此功能. 不过本文并不是介绍使用这些工具的方法,而是要使用框架来编写一个安装程序,实现一般安装程序的复制文件.创建快捷方式.创建程序组.

如何制作C#安装程序

最近需要制作一个C#安装,在网上找了一些资料发现都不是很完整,最后自己综合了一些资料,并且通过亲自检测,最后成功完成C#打包成安装程序(打包成最简单的一种安装程序,如果需要更高的功能请自己在开发).具体步骤整理如下: 该打包过程在vs2008中完成,但也适用于vs2005,程序是用C#写的. 1.新建安装和部署. 打开你所写的项目,在解决方案上右键->添加->新建项目.如图:   选择其他项目类型->安装和部署->安装项目.在名称中把名字改为你所希望的名字,然后确定.如图: 2.确