【问题标题】:Custom installation in vs2010 setup projectvs2010安装项目中的自定义安装
【发布时间】:2013-10-21 14:21:09
【问题描述】:

所有,我正在尝试将Custom Action 添加到我的VS2010 SetUp Project。我想要做的是在安装过程中显示我的自定义赢表。而且我想将自定义 win-form 显示为模式对话框,以便用户在安装过程中不能忽略它。到目前为止,我从 System.windows.forms.IWin32Window 继承了我的安装类。但我不知道如何实现接口的get 成员public IntPtr Handle。

我所做的如下。请帮忙检查一下。谢谢。

 [RunInstaller(true)]
    public partial class MyInstaller : System.Configuration.Install.Installer,IWin32Window
    {
        public MyInstaller ()
        {
            InitializeComponent();
        }


        [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)]
        protected override void OnAfterInstall(IDictionary savedState)
        {
            base.OnAfterInstall(savedState);

        }


        [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);
            Form frm = new frmSelectSource();
            frm.ShowDialog(this);
        }

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

        [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
        protected override void OnCommitted(IDictionary savedState)
        {
            base.OnCommitted(savedState);

        }

        public IntPtr Handle
        {
            get { throw new NotImplementedException(); }
        }
    }

我不知道这是否是正确的方法。如果它是错误的或不可能做到。请告诉我。谢谢。

【问题讨论】:

    标签: visual-studio-2010 installation windows-installer visual-studio-setup-proje


    【解决方案1】:

    这是从 VS2012 中删除 Visual Studio 部署项目的众多原因之一。 VDPROJ 只能在安装执行序列的延迟阶段安排自定义操作。这不是执行用户交互的合适位置。 Windows Installer 设计为首先在安装用户界面序列中执行 UI,然后将控制权转移到执行序列。在静默安装中,仅执行执行序列。

    如果您需要自定义 UI,您要么需要走一条非常复杂的 MSI 构建后操作,以注入 VDPROJ 未公开的功能,要么切换到 InstallShield Professional Edition 的 Windows Installer XML (WiX) 等工具这个。

    请参阅以下内容以更好地了解 MSI:

    Installation Phases and In-Script Execution Options for Custom Actions in Windows Installer

    【讨论】:

    • 我完全同意你的看法,Visual Studio Installation Project 有限制。现在我正在研究更强大的工具InstallShield。到目前为止,我认为这对我来说是正确的选择。谢谢。
    猜你喜欢
    • 2014-08-02
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    相关资源
    最近更新 更多