全部,我正在尝试向Custom Action
添加VS2010 SetUp Project
。我想要做的是在安装过程中显示我的自定义win-form。我想将自定义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(); }
}
}
我不知道这是否是一种正确的方法。如果它是错的或不可能的话。请亲切地告诉我。感谢。
答案 0 :(得分:1)
这是从VS2012中删除visual studio部署项目的众多原因之一。 VDPROJ只能在安装执行序列的延迟阶段安排自定义操作。这不是执行用户交互的合适位置。 Windows Installer旨在首先在安装用户界面序列中执行UI,然后将控制权转移到执行序列。在静默安装中,仅执行执行序列。
如果你需要自定义用户界面,你需要走一条非常复杂的MSI后期操作之路来注入VDPROJ未公开的功能,或者切换到公开的InstallShield Professional Edition的Windows Installer XML(WiX)等工具此
有关MSI的更好理解,请参阅以下内容:
Installation Phases and In-Script Execution Options for Custom Actions in Windows Installer