大家好,我是论坛的新手,也是编程,需要一些关于项目的帮助。
所以我最近开始开发一个程序,首先必须在Registry =>结束时添加其路径。环境=>路径。 对于这项工作,我创建了一个项目(MainLogic),其中包含一个执行该作业的类(Program),包含此事件的Installer Class,并配置了Setup Project。 SOURCE
public InstallerClass1()
{
this.Committed += InstallerClass1_Committed;
this.Committing += InstallerClass1_Committing;
}
private void InstallerClass1_Committing(object sender, InstallEventArgs e)
{
//Console.WriteLine("");
//Console.WriteLine("Committing Event occurred.");
//Console.WriteLine("");
}
private void InstallerClass1_Committed(object sender, InstallEventArgs e)
{
Directory.SetCurrentDirectory(Path.GetDirectoryName
(Assembly.GetExecutingAssembly().Location));
Process.Start(Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location) + "\\MainLogic.exe");
}
程序安装正确,但安装后调用的MainLogic.exe文件导致错误,无法启动。 MainLogic.Program.Main(String[] args)
这是一张更好理解的图片 -
有没有办法避免这种异常,或者你能否提供另一种可行的异常。
***这是我发现的。我可以执行创建和输入到文件。在控制台上书写。可能很多其他的东西没有问题。但是当试图执行这个实际上我必须使用的代码的和平时......
Registry.CurrentUser.OpenSubKey("Pass Key", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("Finaly", "Done");
Registry.CurrentUser.Close();
......我上面描述的例外情况发生了。建议?
所有这些“练习”的主要原因是因为我想在我的应用程序中实现ffmpeg。 我想你听说过ffmpeg(一个在命令提示符下工作的视频/音频处理程序)。 所以我正在研究的是在我的项目中实现它从视频文件中提取mp3,但我想让它更加用户友好,这样用户就可以通过GUI传递命令,从那里我的代码应该完成另一项工作。所以ffmpeg通过命令提示符工作(我知道有一个包装器,但我对阅读的内容不是很满意)但首先你必须在注册表中添加他的路径到Path的值。这就是我的问题所在。
也许这对你来说听起来很愚蠢,但是你知道......当你开始做某事的时候一直都是这样。
答案 0 :(得分:1)
如果当然你可以添加异常处理,看看出了什么问题,但无论如何你都不知道。尝试直接在安装程序中设置注册表项
[RunInstaller(true)]
public partial class Installer1 : Installer
{
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
const string key_path = "SOFTWARE\\YourCompany\\YourApplication";
const string key_value_name = "InstallationDirectory";
RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
if (key == null)
{
key = Registry.LocalMachine.CreateSubKey(key_path);
}
string tgt_dir = "someDirectory";
key.SetValue(key_value_name, tgt_dir);
}
如果你想改变路径enironment变量设置键那里。您只需添加一个新变量或查找一个新变量(包括值),例如 Registry.GetValue MSDN-Link
用户变量
HKEY_CURRENT_USER\Environment
系统变量
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment