我有一个Visual Studio C#项目,我有一个安装程序,可以将文件安装到用户指定的任何目录中。我还有另一个带有本地化语言资源的安装程序,我希望将其安装在上述目录中。
有人能指出我正确的方向吗?我想我必须对注册表项做一些事情,但我不知道该怎么做。
编辑:为了记录,我找到了这个页面:How to: Use a Registry Launch Condition to Specify a Target Directory。我按照说明操作,按照我的意愿行事。
答案 0 :(得分:1)
你走在正确的轨道上。您的第一个安装程序会将其安装路径写入一个众所周知的注册表项。第二个安装程序将从该知名密钥读取路径,并将其dll放在相应的子文件夹中。
答案 1 :(得分:1)
通常,您将创建一个注册表子项和HKEY_LOCAL_MACHINE \ SOFTWARE \的值,然后只需在第二个安装程序中读取该键以确定将其放在何处。
类似 HKLM \ SOFTWARE \ MyApplication ,
然后你创建一个名为 InstallPath 的字符串值,并从那里写下第一个安装程序的路径。
根据您正在做的事情,您可能需要查看merge modules,以便使用一个MSI安装多个组件。
答案 2 :(得分:1)
这是一种方法:
Assembly a = Assembly.GetExecutingAssembly();
string folder = System.IO.Path.GetDirectoryName(a.CodeBase);