用VS2008打包应用程序为安装文件

用VS2008打包应用程序为安装文件

前几天给人做了个小项目,需要打包为setup.exe文件,这就用到了VS 自带的安装部署功能(ckickonce)。

由于我用的是.net3.5 SP1,所以打包的时候要把.net3.5 SP1完整的安装文件加进来。

下面是如何打包的步骤:

1 新建安装部署项目 
打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定。 

2 安装向导 
关闭后打开安装向导,点击下一步,或者直接点击完成。 

3 开始制作

在新建的setup工程下右击,选择Add->Project Output,在弹出的对话框中,在Project栏下选择主工程,点击Ok即可了,这样工程就会自动添加应用程序所需的dll等


然后进入项目文件夹: 
双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来。这时只需把前面未添加进来的文件如图片等添加进来就可以了。

然后右击你的文件,创建快捷方式,然后把快捷方式分别复制或剪切到左边的"用户的'程序'菜单"和"用户桌面"中。这样安装程序安装完成后会在 "开始->所有程序"和"桌面"上生成程序的快捷方式。也可以直接在"用户的'程序'菜单"和"用户桌面"相应目录下新建快捷方式,然后定位到你的文件。 

然后右击左边的"应用程序文件夹"打开属性对话框:将属性中的"DefaultLocation"的路径中的"[Manufacturer]"去掉,不然的话做好的安装程序默认安装目录会是"C:\Program Files\你的用户名\安装解决方案名称"; 

然后打开解决方案管理器,右击你的解决方案名称,选择属性:打开的属性页中,选择"系统必备", 在打开的系统必备页中,在"指定系统必备安装组件的位置"中选中如下选择项:从与我的应用程序相同的位置下载系统必备组件。选上以后,在生成的安装文件包中包含.NetFramework组件 。好了,这样就完成99%了,然后点击"生成->生成解决方案",哈,生成成功! 

4 制作完成 

现在打开解决方案文件夹下的Debug文件夹,就可以看到生成的安装文件了。 

5 关于"卸载"功能的添加 

上面只介绍了简单的生成安装的方法,但是在VS2005下并没有直接生成卸载程序的功能,所以我们只好用msi来实现了,操作方法如下: 

在添加你的应用程序项目的时候,多添加一个msiexec.exe进去,这个文件在c:\windows\system32文件夹下,添加进去以后,为了让他更像个卸载程序,把他的名字改成"Uninstall.exe",当然这个关系不大,改不改都行。 

然后创建一个快捷方式,放到"开始-程序"中,接下来我们要做的就是查找这个部署项目的ProductCode了,鼠标左键单击项目名称,记住是左键单击,然后点击属性标签,注意:不是右击的属性,这个区别很大,这时你就可以看到ProductCode了。 

然后打开你创建的那个快捷方式的属性对话框,在Aguements属性中输入"/x {ProductCode}",好了,然后点击"生成解决方案"即可生成带有卸载功能的安装程序了。

 

好了,说到这里,问题来了:如果你是第一次用VS打包应用程序,那么在构建setup工程的时候通常会出现诸如下面的错误:

The install location for prerequisites has not been set to 'component vendor's web site' and the file 'dotNetFx35setup.exe' in item 'Microsoft.Net.Framework.3.5.SP1' cannot be located on disk.

解决这个问题的办法如下:

更新安装数据包:

  1. 打开C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1 文件夹
  2. 用记事本编辑Product.xml文件.
  3. 在< PackageFiles > 结点下粘贴以下条目: 
    <PackageFile Name="TOOLS\clwireg.exe"/>
    <PackageFile Name="TOOLS\clwireg_x64.exe"/>
    <PackageFile Name="TOOLS\clwireg_ia64.exe"/>
  4. 找到结点 < PackageFile Name="dotNetFX30\XPSEPSC-x86-en-US.exe" 并修改PublicKey的值为: 3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001
  5. 找到结点< PackageFile Name="dotNetFX30\XPSEPSC-amd64-en-US.exe" 并修改PublicKey的值,使其于步骤4的值相同。
  6. 保存product.xml 文件并退出。

 

下载并提取核心安装文件:

  1. 在浏览器输入 URL: http://go.microsoft.com/fwlink?LinkID=118080
  2. 下载dotNetFx35.exe 文件到你的磁盘上。
  3. 单击开始->运行,输入cmd,然后进入到你刚才下载的dotNetFx35.exe文件的目录下。
  4. 输入: 
    dotNetFx35.exe /x:. 
    点击确定。这样Framework文件将会被提取到 该目录的“WCU” 文件夹下.
  5. 进入WCU\dotNetFramework 文件夹,将其下的所有文件复制到C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1 文件夹下。

注意: 不要复制 WCU\dotNetFramework 文件夹. 在WCU文件夹下应该有5个文件夹,并且 它们现在应该都在DotNetFx35SP1 文件夹下. 文件结构应该是如下所示:
o DotNetFx35SP1 (文件夹)

  • dotNetFX20 (文件夹
  • dotNetFX30 (文件夹)
  • dotNetFX35 (文件夹)
  • dotNetMSP (文件夹)
  • TOOLS 文件夹)
  • en (或者其它的本地化文件夹)
  • dotNetFx35setup.exe (文件)


现在你可以删除在步骤2和4下载和提取的文件了。

好了,重新构建一下,问题应该解决了。

你可能感兴趣的:(用VS2008打包应用程序为安装文件)