0

全部,我正在嘗試向我的VS2010 SetUp Project添加一個Custom Action。我想要做的是在安裝過程中顯示我的自定義雙贏形式。而且我想將自定義的雙贏形式顯示爲模式對話框,以便用戶在安裝過程中不能忽略它。到目前爲止,我繼承了我的安裝類System.windows.forms.IWin32Window。但是我不知道如何實現get成員接口的public IntPtr Handle在vs2010安裝項目中自定義安裝

我所做的是以下。請幫忙檢查一下。謝謝。

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

我不知道這是否是正確的做法。如果它是錯誤的或不可能做到的,請親切地告訴我。謝謝。

回答

1

這是Visual Studio部署項目從VS2012中刪除的衆多原因之一。 VDPROJ只能在安裝執行順序的延期階段安排自定義操作。這不是執行用戶交互的適當位置。 Windows安裝程序旨在首先在安裝用戶界面序列中執行UI,然後將控制權轉交給執行順序。在靜默安裝中,只執行執行序列。

如果您需要自定義用戶界面,您需要走一條非常複雜的MSI後期操作的道路,以注入VDPROJ未公開的功能或切換到InstallShield Professional Edition的Windows Installer XML(WiX)暴露了這一點。

見更好地瞭解MSI的以下內容:

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

+0

我完全同意你的看法,'Visual Studio安裝Project'有限制。現在我正在研究更強大的工具'InstallShield'。到目前爲止,我認爲這是我的正確選擇。謝謝。 –

相關問題