VS 安装包制作

    技术2022-05-20  47

    1.添加项目输出

    在文件系统编辑器中,如果项目在一个解决方案中,则可以添加项目的主输出,为自动识别添加生成的exe,config,dll引用等;项目经常还包括一些资源文件,如图片,xml等,这些设置为内容的话,则可以添加项目的内容文件;如果还有一些特殊文件添加,比如第3点说到msiexec.exe文件,则可以直接浏览添加。

    2.如何使新生成的安装包在安装时自动覆盖以前安装过的版本

    设置部署项目属性RemovePreviousVersion为True,并将Version升高,并在生成时提示的“建议在更改版本时更改ProductCode,要进行该操作吗?”选择是。

    3.如何添加卸载

    找到msiexec.exe文件,一般在windows/system32下,添加到文件系统中,可以改名为UnInstall.exe,然后设置其快捷方式,最好重命名快捷方式并放到程序目录中,并设置其Arguments属性值为/x {[ProductCode]},这里用[ProductCode]可以自动获取安装包的ProductCode,网上多数让你直接拷贝部署项目的ProductCode,但是第2点提到了ProductCode是会变的。(ProductCode变是为了覆盖安装,ProductCode不变是为了检测升级)

    4.如何在安装整个过程中实现自定义操作

    首先需要新建一个类库项目,然后在其中添加安装程序类,根据需要添加相应的重写方法

    例如要在安装完成后启动程序,可以这样写

    protected override void OnAfterInstall(IDictionary savedState) { string appPath = Context.Parameters["targetdir"]; Process.Start(appPath + "XXX.exe"); base.OnAfterInstall(savedState); }

    Context.Parameters["targetdir"]为获取安装路径,需要在部署项目中设置

    其次,在部署项目的自定义操作中,把安装,提交,回滚,卸载都添加上面项目的主输出

    设置主输出的属性CustomActionData值为/targetdir="[TARGETDIR]/",这样Context.Parameters["targetdir"]才能获取到安装路径。

    原帖:http://blog.sina.com.cn/s/blog_488e6ca90100fyiq.html


    最新回复(0)