【问题标题】:how can get the path from installer and how set in my app?如何从安装程序获取路径以及如何在我的应用程序中设置?
【发布时间】:2011-03-07 08:35:20
【问题描述】:

我正在编写一个 win 应用程序,现在我想为我的应用程序进行设置,我的代码是:

Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\Cu­rrentVersion\Run");
 rk.SetValue("MyAppName", @"C:\WhereMyAppIs\MyApp.exe");

现在如何从安装程序中获取路径来设置它??? 谢谢。

【问题讨论】:

  • 嗯。为什么需要手动创建注册表项?使用 Visual Studio 创建一个新的“安装项目”;它会自动处理将您的应用程序安装到最终用户的计算机所涉及的细节。

标签: c# installation visual-studio-setup-proje visual-studio-setup


【解决方案1】:

如果你使用Visual Studio,你可以右击设置项目->查看->注册表,然后设置你喜欢的注册表键。

看看这个网站:

msi - Set InstallPath registry key

Registry Settings Management (MSDN)

【讨论】:

  • 我以这种方式制作注册表项“设置项目->查看->注册表然后设置您喜欢的注册表项。”但是现在如何在安装时设置值?我的意思是我想从用户那里获取路径然后设置。
  • 抱歉回答太迟了!您可以添加一个自定义操作,该操作调用一个读取路径并将其放入注册表的 exe 文件。转到安装项目 -> 查看 -> 自定义操作 -> 选择安装并添加自定义操作添加 exe 文件。
【解决方案2】:

如果它是使用 Windows Installer(.MSI 文件)安装的,您可以使用 MsiGetComponentPath API:

    [DllImport("msi.dll", CharSet = CharSet.Unicode)]
    private static extern int MsiGetComponentPath(string szProduct, string szComponent, StringBuilder lpPathBuf, ref int pcchBuf);

这样称呼它:

int len = 256;
StringBuilder sb = new StringBuilder(len);
MsiGetComponentPath(productCode, componentId, sb, ref len);

【讨论】:

  • @Simon Mourier:我想在安装安装文件时设置注册表项,但我不知道如何从用户那里获取路径,然后设置注册表的值键。跨度>
  • @na.farzane - 你在使用 Windows 安装程序吗?
  • @Simon Mourier:我使用 Visual Studio。
  • @na.farzane - 但使用“设置和部署”项目类型?
  • @Simon Mourier:是的,“设置和部署”。
猜你喜欢
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2012-10-17
  • 2011-04-24
  • 2011-12-29
相关资源
最近更新 更多