Visual Studio 工程制作程序安装包

目的描述:用Visual Studio 2010开发的工程,已经编译开发完成,需要将工程打包成安装包。

参考:Visual Studio 2010制作程序安装包

制作ICO图标文件的网站:比特虫在线制作ico图标

VS2010安装包制作全过程图解

(1)准备执行文件

程序编译后后生成Release 文件夹,里面有exe可执行文件。 将这个文件复制出来,运行按照提示将缺少的dll运行库都复制到这个文件夹中,直至exe运行而不报错。   (我采用的编译方法是静态编译)

(2)创建安装包工程

启动Visual studio 2010,“文件”→“新建”→“项目”,选择“其他项目类型”→“安装和部署”→“Visual Studio Installer”,然后选择“安装项目”。默认名称为“Setup1”。

(3)目标计算机上的文件系统

第2步点击“确定”后,会出现下图所示的界面。

其中:

“应用程序文件夹”:存放要打包的文件,包括exe、dll、ico等,以及其他程序运行所需文件。

“用户的‘程序’菜单”:程序安装完成后,在“开始菜单”显示的内容。

“用户桌面”:一般存放应用程序的快捷方式,即安装包安装完成后再桌面上显示的快捷方式。

(4)制作安装包

1 添加应用程序文件

将可以运行的Debug/Release文件夹下的文件拖入到“应用程序文件夹”中。

(如果Debug/Release下也有文件夹,那么需要右键单击“应用程序文件夹”,建立与之完全对应的文件夹,并将各文件夹中的文件拖入到对应的文件夹中)

2.制作程序快捷方式

右键单击exe文件,选择创建快捷方式,并根据自己的需要重命名

为快捷方式设置ICO图标:右键点击快捷方式文件,选择“属性窗口”,找到“Icon”。在这里设置快捷方式的图标。把快捷方式的图标设置成之前放入应用程序文件夹中的ico文件。

这样有图标的程序快捷方式就做完了,将

在“用户的‘程序’菜单”下添加文件夹,以程序的名称命名(例如我的项目名称是CFU,这个新建文件夹就叫"CFU")。然后将这个快捷方式文件拖入到这个新建的CFU文件夹中。

用与上同样的方式,再制作一个快捷方式,拖入到“用户桌面”文件夹下,作为桌面启动的快捷方式。

3.制作程序卸载的快捷方式文件夹

制作卸载程序,我们需要Windows自带的程序msiexec.exe
右键单击“应用程序文件夹”→“添加”→“文件”,选择“C:\Windows\System32\msiexec.exe”,将msiexec.exe添加进来。然后右键建立快捷方式,更名为“uninstall”。

右键单击该快捷方式,选择属性,找到Arguments一项,在该项中填入“/x+空格+ProductCode”(引号不要写)。

/x {5E971BBA-EB51-4C28-8785-AEA08A5B2532}

“ProductCode”可在工程属性中找到。

在第二步创建的CFU文件夹下添加uninstall文件夹,将刚刚创建的uninstall 快捷方式拖入到这个文件夹中。

4.修改安装包属性

右键单击工程,选择“属性”。在这里你可以按照自己的需求更改一些属性。

5.修改程序默认安装目录

右键单击“应用程序文件夹”,选择“属性窗口”,可以看到如下图所示。
 

“DefaultLocation”一项即为默认安装目录,包含三部分“ProgramFilesFolder”、“Manufacturer”、“ProductName”。你可以删除“Manufacturer”以使程序安装时,略去建立Manufacturer目录。

(5)编译生成

菜单栏中选择  生成 下面的第三项,生成安装包程序。

生成成功后项目文件夹中会出现下面两个文件,两个都是可以运行的安装包程序:

可能出现的问题:  警告: 应将“msiexec.exe”排除,原因是其源文件“C:\Windows\System32\msiexec.exe”受到“Windows 系统文件保护”。 

解决的方法:1.不管这个警告,安装包运行后uninstall 快捷方式仍然可以正常的卸载程序(我就是这样的)2.如果不行使用第二种方法:(参考VS2005打包时加入卸载功能

2.1先生成安装包,记下ProductCode,下面要用到
2.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


2.3将控制台程序BIN目录的exe文件加入到打包程序文件中,在程序组创建uninst.exe的快捷方式

(6)效果

(7)遇到的问题:制作出来的安装包正常安装后,运行出的结果与源程序结果不同。

问题分析:后来经过大量的测试后发现用安装包安装程序,如果选择安装路径在 C:\Program Files 或  C:\Program Files (x86) 文件夹下运行出来的结果就会和本来程序的运行效果不同。 甚至我把未打包的程序执行文件直接复制到 C:\Program Files也不能正常运行。 (我觉得应该是与在C:\Program Files文件夹下操作需要管理员权限有关)

解决方法:制作安装包时修改默认安装路径,而且用安装包进行程序安装时不能将和程序安装在C:\Program Files和C:\Program Files (x86) 路径之下。

猜你喜欢

转载自blog.csdn.net/qq_28093585/article/details/80192215