思路:使用自定义

解决方案添加类库项目

添加安装程序类

随后右键查看代码

在构造函数添加事件

同时完成这个事件,在此事件中根据需要添加我们需要的内容,此处为添加注册表,并根据安装目录添加url protocol协议

代码如下

public Installer()
{
InitializeComponent();
this.AfterInstall += new InstallEventHandler(Installer_AfterInstall);
} private void Installer_AfterInstall(object sender, InstallEventArgs e)
{
string path = this.Context.Parameters["targetdir"];//获取用户设定的安装目标路径, 注意,需要在Setup项目里面自定义操作的属性栏里面的CustomActionData添加上/targetdir="[TARGETDIR]\"
List<string> cmds =
new List<string>{
"/c" + $"reg add \"HKCR\\EasyPrint\" /f /ve /d \"EasyPrintProtocol\"",
"/c" + $"reg add \"HKCR\\EasyPrint\" /f /v \"URL Protocol\" /d \"",
"/c" + $"reg add \"HKCR\\EasyPrint\\DefaultIcon\" /f /ve /d \""+path+"\\EasyPrint.exe,1\"",
"/c" + $"reg add \"HKCR\\EasyPrint\\shell\\open\\command\" /f /ve /d \"\\\""+path+"\\EasyPrint.exe\\\" \\\"%1\\\"\""
};
foreach (var command in cmds)
{
Process p = new Process
{
StartInfo =
{
FileName = "cmd.exe",
Arguments = command,
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
p.Start();
p.StandardInput.WriteLine("exit");
p.Close();
}
}

在install项目中添加此类库的主输出

右键项目,view,自定义操作

 

在需要的位置添加自定义操作

右键

右键项目

这里选择我们需要的项目,即自动添加注册表的主输出

右键属性 在CustomActionData中加入/targetdir="[TARGETDIR]/"

这样便可在代码中使用this.Context.Parameters["targetdir"]获取安装路径

编译即可

vs install 安装时自动添加注册表的更多相关文章

  1. 【转】C#程序打包安装部署之添加注册表项

    今天为大家整理了一些怎样去做程序安装包的具体文档,这些文档并不能确保每个人在做安装包的时候都能正确去生成和运行,但是这些文档的指导作用对于需要的朋友来说还是很有必要的,在实际产品的安装部署过程中可能有 ...

  2. C#程序打包安装部署之添加注册表项(转)

    今天为大家整理了一些怎样去做程序安装包的具体文档,这些文档并不能确保每个人在做安装包的时候都能正确去生成和运行,但是这些文档的指导作用对于需要的朋友来说还是很有必要的,在实际产品的安装部署过程中可能有 ...

  3. 注册表的作用、bat文件中REG ADD命令添加注册表项以及bat

    注册表的用途与设置 注册表是windows的核心,里面储存着大量的系统信息,说白了就是一个庞大的数据库.如果你不懂什么是数据库,那没关系,不影响你了解注册表,不过最好对数据库有所了解.注册表里面所有的 ...

  4. 安装程序无法打开注册表项 UNKNOWN\Components\…的简单解决办法(转)

    安装程序无法打开注册表项 UNKNOWN\Components\…的简单解决办法 2018年04月16日 16:41:32 super_star_贤 阅读数:7193   在安装软件时(比如安装SQL ...

  5. python 以及 pywin32添加注册表

    python 添加注册表信息: import sys from winreg import * # tweak as necessary version = sys.version[:3] insta ...

  6. 解决Office安装错误代码1024:安装程序无法打开注册表项UNKNOWN\Components\

    解决Office安装错误代码1024:安装程序无法打开注册表项UNKNOWN\Components\ 在安装软件时(比如安装SQLserver.office.Visio)会出现如下的错误提示: 无法打 ...

  7. WPF 设置程序开机自动运行(+注册表项)

    #region 设置程序开机自动运行(+注册表项) RegistryKey rgkRun = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Micr ...

  8. npm install安装时忘记--save解决方法

    title: npm install安装时忘记--save解决方法 date: 2017-05-07 20:17:54 tags: npm categories: --- 网上还有一个解决方案就是: ...

  9. 安全之路 —— C/C++实现利用添加注册表项实现文件自启动

    简介 添加注册表项是实现文件自启动的经典方法之一,但因为操作注册表项是一个敏感操作,被报毒可能性较大,但即便如此,这个方法还是值得一学的,因为后期大部分编程都涉及到注册表操作. 最常使用到的注册表项有 ...

随机推荐

  1. Oracle笔记(一) Oracle简介及安装

    一.轨迹 二.Oracle简介 Oracle是现在全世界最大的数据库提供商,编程语言提供商,应用软件提供商,它的地位等价于微软的地位. Oracle在古希腊神话中被称为“神谕”,指的是上帝的宠儿,在中 ...

  2. 第七章· MySQL的存储引擎

    一.存储引擎简介 1.文件系统: 1.1 操作系统组织和存取数据的一种机制. 1.2 文件系统是一种软件. 2.文件系统类型:ext2 3 4 ,xfs 数据 2.1 不管使用什么文件系统,数据内容 ...

  3. mysql服务脚本

    #!/bin/bash #*************************** #* copyleft huihui 2015-08-11 #**************************** ...

  4. python 示例代码3

    示例3:Python获取当前环境下默认编码(字符编码demo1.py) 字符编码,python解释器在加载py文件中的代码时,会对内容进行编码(默认ASCII),windows系统默认编码为GBK,U ...

  5. TCP的ACK原理和延迟确认机制

    某天晚上睡觉前突然想到 tcp的ACK确认是单独发的还是和报文一起发的,下面看一下别人的解答 一.ACK定义TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表示已经确认接收到ACK确认号 ...

  6. 第二章 Vue快速入门--8 v-bind指令的学习

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  7. ZJOI2013 K大数查询 和 LG3380【模板】二逼平衡树(树套树)

    K大数查询 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c:如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的 ...

  8. Linux下DB2指令总结

    1.显示当前实例 >> get instance The current database manager instance is: db2axing 2.列出当前实例中激活的数据库 &g ...

  9. MySQL 将数据文件分布到不同的磁盘

    https://blog.csdn.net/john_chang11/article/details/51783632 [root@test1 temp]# vi /etc/my.cnf [mysql ...

  10. k8s部署ingress-nginx

    ingress-nginx的部署方式有多种,本文介绍nodeport方式和hostnetwork方式: 一.nodeport方式 1.下载mandatory.yaml文件:https://raw.gi ...