在自定义操作编辑器中,我已将自定义操作添加到安装和卸载过程的各个阶段.在属性窗口中,我将CustomActionData属性标记为:
/TARGETDIR = "[TARGETDIR]"
Run Code Online (Sandbox Code Playgroud)
我希望上面的安装目录信息传递给自定义操作.
自定义操作似乎正在触发,但我收到以下错误消息:
"错误1001.无法写入注册表的密钥"(或类似的东西,我正在用我的本地语言翻译它).
我究竟做错了什么?
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
//using System.Windows.Forms;
using Microsoft.Win32;
namespace CustomActions
{
[RunInstaller(true)]
public partial class Installer1 : Installer
{
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
const string key_path = "SOFTWARE\\VendorName\\MyAppName";
const string key_value_name = "InstallationDirectory";
RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path);
if (key == null)
{
key = Registry.LocalMachine.CreateSubKey(key_path);
}
string tgt_dir = Context.Parameters["TARGETDIR"];
key.SetValue(key_value_name, tgt_dir);
}
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState); …Run Code Online (Sandbox Code Playgroud)