0

Tout, j'essaie d'ajouter un Custom Action à mon VS2010 SetUp Project. Ce que je veux faire est de montrer mon win-form personnalisé pendant l'installation. Et je veux montrer le win-form personnalisé comme une boîte de dialogue modale afin que l'utilisateur ne peut pas l'ignorer lors de l'installation. Jusqu'à présent, j'hérite de ma classe d'installation du System.windows.forms.IWin32Window. Mais je ne savais pas comment implémenter le membre getpublic IntPtr Handle de l'interface.Installation personnalisée dans le projet d'installation vs2010

Ce que j'ai fait est ci-dessous. s'il vous plaît aider à l'examiner. merci.

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

Je ne sais pas si c'est une bonne façon de le faire. Si c'est faux ou pas possible de le faire. S'il vous plaît veuillez me le dire. Merci.

Répondre

1

C'est l'une des nombreuses raisons pour lesquelles les projets de déploiement de studio visuel ont été retirés du VS2012. VDPROJ peut uniquement planifier des actions personnalisées dans la phase différée de la séquence d'exécution de l'installation. Ce n'est pas un endroit approprié pour effectuer une interaction avec l'utilisateur. Windows Installer est conçu pour exécuter l'interface utilisateur en premier dans la séquence de l'interface utilisateur d'installation, puis transférer le contrôle à la séquence d'exécution. Dans une installation silencieuse, seule la séquence d'exécution est exécutée. Si vous avez besoin d'une interface utilisateur personnalisée, vous devez soit descendre une route compliquée de manipulations post-construction du MSI pour injecter des fonctionnalités non exposées par VDPROJ ou passer à un outil tel que Windows Installer XML (WiX) de InstallShield Professional Edition qui expose cela.

Voir ce qui suit pour une meilleure compréhension de MSI:

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

+0

Je suis totalement d'accord avec vous,'Installation Visual Studio project' a la limitation. Maintenant, je travaille sur l'outil plus puissant 'InstallShield'. Jusqu'à présent, je pense que c'est le bon choix pour moi. Merci. –

Questions connexes