VS安装项目自定义操作c#

时间:2010-10-04 20:14:29

标签: c# setup-project

您好   我有来自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);
        }
    }

2 个答案:

答案 0 :(得分:1)

您不能这样做...因为在从MSI安装文件并将其设置到安装路径之后会发生自定义操作。否则,如何调用自定义操作?它们在可用于.NET安装API(installUtil使用)之后执行。所以,你实际上必须安装到某个路径,然后再移动它们。现在,可能有一种方法可以通过InstallShield或您可以使用的任何安装工具集来编写脚本,但是通过.NET自定义操作,您有一定的局限性。 (另一个此类限制是在安装实际将文件提取到某个位置之前,根据安装向导中的输入参数修改配置文件。)

答案 1 :(得分:1)

你可以这样做,

如果要访问自定义安装程序类中的安装路径,您的第一直觉是使用[TARGETDIR]或[INSTALLDIR]作为自定义操作。 唉,这不会起作用,这将在执行自定义操作后填充 又怎样 ? string applicationInstalledPath = Context.Parameters [“AssemblyPath”]将获取已安装的目录。