实战VS打包图解过程

1,数据组织

将工程代码Release下的发在一个地方,将插件(如第三方Dll、Com组件等)放在一个地方、另外将快捷方式所需图标放在一个地方

image

如上图,【系统文件】放置工程Release下的所有生成内容,图片方式两张图片

实战VS打包图解过程_第1张图片

插件放置所需要的依赖Com组件等。

2,建立打包工程

实战VS打包图解过程_第2张图片

3,文件资源关联

打开【文件系统视图】,其他视图中【注册表】、【自定义操作】可能用机会的靠前些。

实战VS打包图解过程_第3张图片

实战VS打包图解过程_第4张图片

打开【系统文件】,选中所有内容,直接拖到上图右侧空白区域,添加后如果发现有重复Dll名称的,去掉大写的DLL,修改属性中的Exclude属性为false即可

实战VS打包图解过程_第5张图片

或者看属性中的路径,尽量保证采用的是【系统文件】中的路径地址。

 

然后将【插件】和【图片】两个文件夹选中,直接拖放至“文件系统视图”右侧空白区内。

如果【插件】中有需要COM注册的,在“文件系统视图”右侧中找到该DLL文件,在属性中找到Register属性,修改为vsdrfCOMSelfReg。

实战VS打包图解过程_第6张图片

 

4,桌面快捷方式和开始菜单

实战VS打包图解过程_第7张图片

a,在【用户的“程序”菜单】中添加一个文件夹,正确命名,安装后会在【所有程序】中出现。

image

实战VS打包图解过程_第8张图片

b,在【文件系统视图】中将主程序EXE复制快捷方式(如上图),复制到上面建立的文件夹下,同时复制一份到用户桌面中,两个文件代表了开始菜单和桌面对应项,所以属性统一设置如下:

实战VS打包图解过程_第9张图片

1,设置名称,也就是在开始菜单和桌面中显示的名称。2,设置Descriptionimage

3,设置Icon。选择“浏览”image,在【应用程序文件夹】/【图片】文件夹下找到对应的ICO图片即可。

实战VS打包图解过程_第10张图片

5,卸载

该过程应该在6操作后完成,因为卸载的属性依赖于项目的【ProductCode】属性,而该属性在“版本号”修改后会自动改变。请注意。

a,首先添加一个msiexec.exe进去,这个文件在c:\windows\system32文件夹下,

然后给他创建一个快捷方式,放到"开始-程序"中,修改名称、图标属性,类似4中操作步骤。

然后修改【Arguments】属性为【/x 【ProductCode】】,其中【ProductCode】在项目属性中可以找到

实战VS打包图解过程_第11张图片

选择image后查看属性可以看到【ProductCode】属性

image

6,属性填写(系统必备、版本、产品名称、公司名称)

需要注意以下属性:【Author】、【Description】、【Manufacturer】、【ProductName】、【Title】、【Version】等

实战VS打包图解过程_第12张图片

然后选择image,查看其属性,主要修改【DefaultLocation】属性为如下形式

实战VS打包图解过程_第13张图片

一般默认会将VS对应的Framework版本作为系统必备,可以在项目属性中查看

实战VS打包图解过程_第14张图片        实战VS打包图解过程_第15张图片

7,Release模式生成

然后在Release模式下生成。生成的名称可以在项目属性中查看修改:

实战VS打包图解过程_第16张图片

8,MSI属性修改(orca)

安装Orca工具,打开7中生成的MSI文件。如下图所示,左侧选中【Shortcut】,右侧找到“Directory_”字段下值为【DesktopFolder】的记录,修改【Target】字段的值为[TARGETDIR]主程序名称.exe

示例中为[TARGETDIR]TestWindow.exe。这样做主要是避免VS打包后生成的安装包在安装后桌面快捷方式无法查看其文件路径。

实战VS打包图解过程_第17张图片

9,对注册表操作的一个应用

A,首先要对项目的属性设置好

实战VS打包图解过程_第18张图片

要注意属性:Manufactuer、ProductName、RemovePreviousVersions

B,注册表视图中添加一个值

实战VS打包图解过程_第19张图片

才、这样在系统安装后就会在注册表对应位置写入值。

C,如果对安装过程中有特殊操作编码要求,可以新建一个类库工程,然后新建一个【安装程序类】

实战VS打包图解过程_第20张图片

安装程序类中会有如下事件:

实战VS打包图解过程_第21张图片

可以在对应事件中进行一系列编码操作。比如对注册表的操作等。

private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
{
//HKEY_LOCAL_MACHINE\SOFTWARE\Planning3DSystem
RegistryKey software = Registry.LocalMachine.OpenSubKey("SOFTWARE");
if (software == null)
return;
RegistryKey planningkey = software.OpenSubKey("Planning3DSystem", true);
if (planningkey == null)
return;
string path = planningkey.GetValue("path").ToString();
if (string.IsNullOrEmpty(path))
{
return;
}

if (!File.Exists(path))
{
return;
}

if (path.Contains("Program Files"))
{
path = path.Replace("Program Files", "Progra~1");
planningkey.SetValue("path", path);
}
}

D,如果建立了上述类库,需要把类库放在”文件系统视图“中的一个位置,然后在”自定义操作视图“中引用该DLL文件

实战VS打包图解过程_第22张图片

这样在安装过程中就会相应类库中编写的对应代码了。

你可能感兴趣的:(打包)