您好 我有来自ms网站的以下代码,我想在代码中设置安装路径(不要问,但要相信我,我需要!)
那么如何从自定义操作中访问和设置安装路径?
public partial class Installer1 : System.Configuration.Install.Installer
{
public Installer1()
{
InitializeComponent();
//need code to set the installation path
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
System.Diagnostics.Process.Start("http://www.microsoft.com");
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}
}
答案 0 :(得分:1)
您不能这样做...因为在从MSI安装文件并将其设置到安装路径之后会发生自定义操作。否则,如何调用自定义操作?它们在可用于.NET安装API(installUtil使用)之后执行。所以,你实际上必须安装到某个路径,然后再移动它们。现在,可能有一种方法可以通过InstallShield或您可以使用的任何安装工具集来编写脚本,但是通过.NET自定义操作,您有一定的局限性。 (另一个此类限制是在安装实际将文件提取到某个位置之前,根据安装向导中的输入参数修改配置文件。)
答案 1 :(得分:1)
你可以这样做,
如果要访问自定义安装程序类中的安装路径,您的第一直觉是使用[TARGETDIR]或[INSTALLDIR]作为自定义操作。 唉,这不会起作用,这将在执行自定义操作后填充 又怎样 ? string applicationInstalledPath = Context.Parameters [“AssemblyPath”]将获取已安装的目录。