安装期间获取应用程序path

即时部署一个应用程序,并在安装过程中,在用户select安装应用程序的位置后,我想获得该path,我已经在一个自定义操作,但我不知道如何获得应用程序的path将被安装!

它的Windows窗体和即时通讯开发使用Visual Studio 2010“C#”。

和即时通讯使用默认的部署工具…

任何想法 ?

提前致谢…

Solutions Collecting From Web of "安装期间获取应用程序path"

您的自定义操作所在的类应该从System.Configuration.Installer.Installer继承。 它有一个名为Context的参数,它有一个参数字典。 该字典包含一些有关安装的有用变量,你可以添加一些。

将定制安装程序添加到“自定义操作”窗格中的安装项目之后。 选择安装操作并将CustomActionData属性设置为:

/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. } } 

我知道这是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 

对不起,发布旧帖子的答案,但我的答案可能有助于其他。

 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); } }