【发布时间】:2023-04-01 00:01:01
【问题描述】:
我有一个 C# .net 4 应用程序,我正在开始创建安装程序。
已安装的程序运行良好,但我的客户希望应用程序以窗口开头(它是一个“始终位于顶部”的工具栏,可帮助他们管理呼叫)。
我想创建一个“类安装程序”,并在其中插入一个注册表项。
我有两个问题:
首先:如何找到可执行路径?它可以在安装之间更改。我在某个地方找到了 Application.ExecutablePath,但它似乎位于 Application.Window.Forms 中,所以我认为它与 WPF 不兼容
第二:我需要在本地机器的注册表中插入这个键。 Windows 安装程序中有没有办法指定用户必须具有管理员权限?
这是我开始的代码:
RegistryKey rkApp = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rkApp.SetValue("CstStart", ???);
非常感谢您的帮助!
编辑:我发现我可以将一些数据传递给我的自定义操作:
/DIR="[TARGETDIR]\"
在 CustomActionData 中。
通常说我可以通过
this.Context.Parameters["DIR"];
但是....在我的安装程序类中,this.Context 似乎为空:(
EDIT2:上下文为空,因为我在构造函数中执行此操作,我现在正在执行此操作,如果 this.AfterInstall 现在我得到一个上下文,它似乎包含一个 var "assemblypath",其中包含完全我需要的路径。
【问题讨论】:
-
您正在编写自己的安装程序吗?不要,安装项目可以毫无问题地做到这一点。
-
完全没有,我正在使用 Visual Studio 安装程序。但我正在做一个“类安装程序”,它是一个自定义操作,应该由 Visual Studio 安装程序执行。你知道如何在没有自定义类的情况下向注册表添加一个条目吗?我很高兴知道如何:):)
标签: c# visual-studio installation registry startup