Setup (VS 2005) 安装包制作 vs setup .msi project

How to uninstall
在打包项目中添加文件msiexec.exe(一般在c:/windows/system32(系统目录中)找到)。
在文件系统视图中选择应用程序文件,在msiexec.exe上单击右键选择“创建快捷方式”,重命名快捷方式为“uninstall”.
更改此快捷方式Argmuments为“/x {产品ID}”,产品ID的值为打包项目的ProductCode属性值。
注:ProudctCode(选择解决方案资源管理根目录如Setup1,再查看属性标签,不是右键属性)
或者是在应该程序中加入下面代码:
string sysroot = System.Environment.SystemDirectory;
System.Diagnostics.Process.Start(sysroot + " //msiexec.exe", "/x {850FED90-20D0-4EBA-BEDB-3D9DBA25F6EC} /qr");
.............................................................................................................................................................
.............................................................................................................................................................

1.       新建Setup ProjectVS 2005

2.       在文件系统编辑器中添加文件,程序集,项目输出,文件夹等。添加程序集时应注意程序集的依赖关系(例如,同一个文件夹下有A.dllB.dllC.dll;其中C.dll依赖于另两个dll,那么在添加C.dll时会自动将另两个程序集添加)

3.       文件的PackageAs属性设置是否将文件打包到msi中,vsdpaDefault为是,vsdpaLoose为否,编译时自动将文件copy到与msi同级目录下

4.       添加快捷方式:对文件右击创建快捷方式,将其移到桌面或开始菜单目录下。可编辑其名字,图标等

5.       安装完自动启动

需添加Custom Action Editor中添加Custom Action

CustomActiont,里面添加程序集引用。程序集通常是下面格式的类(里面可以设置安装前、安装后、卸载前、卸载后的操作)。添加时,可能还会涉及到一些CustomerActionData(程序集属性) /targetdir="[TARGETDIR]/" /sourcedir="[SourceDir]/"

[RunInstaller(true)]

        public class AutoUnInstall : System.Configuration.Install.Installer

{

protected override void OnAfterInstall(IDictionary savedState)

        {

      string aimPath = base.Context.Parameters["targetdir"].ToString();

      //

}

}

6.       可用Condition可设置一些用户选择条件,当然也得添加用户界面(User Interface Editor

7.       文件安装路径

Set the Default location for Application Location([ProgramFilesFolder][Manufacturer]/[ProductName])

8.       卸载快捷方式

C:/WINDOWS/system32/msiexec.exe

Add parameter:"/x {ProductCode}"

9.       Vista下必须用Setup安装,不能直接用msi安装的问题,快捷方式引起重新安装(删除任意文件)问题

cscript.exe "$(ProjectDir)CustomAction_NoImpersonate.js" "$(BuiltOuputPath)"&cscript.exe "$(ProjectDir)WiRunSQL.vbs" "$(BuiltOuputPath)" "INSERT INTO `Error` (`Error`, `Message`) VALUES (1001, 'Error [1]: [2]')" &cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOuputPath)" "INSERT INTO Property(Property, Value) VALUES ('DISABLEADVTSHORTCUTS', '1')"

CustomAction_NoImpersonate.jsWiRunSQL.vbs放在Setup project同级文件夹下。

10.   引用

http://msdn.microsoft.com/en-us/library/19x10e5c(VS.71).aspx

http://msdn.microsoft.com/en-us/library/ms228283(VS.80).aspx

http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/ea16bb03-e6ad-4008-b3aa-4b92da24e67f/

http://www.shahine.com/omar/VSTOAddinsAndVista.aspx

11.   XCopy

http://baike.baidu.com/view/893375.htm?fr=ala0

/i 如果 Source 是一个目录或包含通配符,而 Destination 不存在,xcopy 会假定destination 指定目录名并创建一个新目录。然后,xcopy 会将所有指定文件复制到新目录中。默认情况下,xcopy 将提示您指定 destination 是文件还是目录。

/s 复制非空的目录和子目录。如果省略 /sxcopy 将在一个目录中工作。

/e 复制所有子目录,包括空目录。同时使用 /e/s /t 命令行选项

/t 只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含 /e 命令行选项

XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]

  [/C] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]

  [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]

[/EXCLUDE:file1[+file2][+file3]...]

12.   MS Build

http://msdn.microsoft.com/zh-cn/library/0k6kkbsd(VS.80).aspx

http://msdn.microsoft.com/en-us/library/ms171452.aspx

 

"Script"

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值