0

所有,我正在尝试将一个添加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(); }
        }
    }

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

4

1 回答 1

1

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

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

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

Windows Installer 中自定义操作的安装阶段和脚本内执行选项

于 2013-10-14T12:07:58.243 回答