我正在部署一个应用程序,在安装过程中,在用户选择安装应用程序的位置后,我希望获得该路径;我在一个自定义的行动已经,但我不知道如何获得应用程序的路径,它将被安装!它是Windows窗体,我正在使用Visual Studio 2010“C#”进行开发。我正在使用默认的部署工具...有什么想法吗?提前感谢…
pw9qyyiw1#
您的自定义操作所在的类应继承自System.System.Installer.Installer。这上面有一个名为Context的参数,它有一个参数字典。字典包含了一些关于安装的有用变量,你可以添加一些。在“自定义操作”窗格中将自定义安装程序添加到安装项目后。选择“安装”操作并将CustomerData属性设置为:
/targetdir="[TARGETDIR]\"
然后你可以像这样访问路径:
[RunInstaller(true)] public partial class CustomInstaller : System.Configuration.Install.Installer { public override void Install(System.Collections.IDictionary stateSaver) { base.Install(stateSaver); string path = this.Context.Parameters["targetdir"]; // Do something with path. } }
pokxtpni2#
我知道这是VB,但它为我工作。
Private Sub DBInstaller_AfterInstall(ByVal sender As Object, ByVal e As System.Configuration.Install.InstallEventArgs) Handles Me.AfterInstall MessageBox.Show(Context.Parameters("assemblypath")) End Sub
yrdbyhpb3#
很抱歉为老帖子提供答案,但我的答案可能会帮助其他人。
public override void Install(System.Collections.IDictionary stateSaver) { base.Install(stateSaver); rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); if (rkApp.GetValue("MyApp") == null) { rkApp.SetValue("MyApp", this.Context.Parameters["assemblypath"]); } else { if (rkApp.GetValue("MyApp").ToString() != this.Context.Parameters["assemblypath"]) { rkApp.SetValue("MyApp", this.Context.Parameters["assemblypath"]); } } } public override void Uninstall(System.Collections.IDictionary savedState) { base.Uninstall(savedState); rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); if (rkApp.GetValue("MyApp") != null) { rkApp.DeleteValue("MyApp", false); } }
wd2eg0qa4#
System.IO.Path.GetDirectoryName(this.Context.Parameters["assemblypath"]);
eyh26e7m5#
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
5条答案
按热度按时间pw9qyyiw1#
您的自定义操作所在的类应继承自System.System.Installer.Installer。这上面有一个名为Context的参数,它有一个参数字典。字典包含了一些关于安装的有用变量,你可以添加一些。
在“自定义操作”窗格中将自定义安装程序添加到安装项目后。选择“安装”操作并将CustomerData属性设置为:
然后你可以像这样访问路径:
pokxtpni2#
我知道这是VB,但它为我工作。
yrdbyhpb3#
很抱歉为老帖子提供答案,但我的答案可能会帮助其他人。
wd2eg0qa4#
eyh26e7m5#