0

すべて、私はに追加しようとしCustom ActionていVS2010 SetUp Projectます。私がやりたいことは、インストール中にカスタムの win-form を表示することです。そして、ユーザーがインストール中にそれを無視できないように、カスタムの win-form をモーダル ダイアログとして表示したいと考えています。これまでのところ、インストール クラスを から継承していSystem.windows.forms.IWin32Windowます。インターフェース。getpublic 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 から削除された多くの理由の 1 つです。VDPROJ は、インストール実行シーケンスの遅延フェーズでのみカスタム アクションをスケジュールできます。これは、ユーザーとのやり取りを行うのに適した場所ではありません。Windows インストーラーは、インストール ユーザー インターフェイス シーケンスで最初に UI を実行し、次に制御を実行シーケンスに移すように設計されています。サイレント インストールでは、実行シーケンスのみが実行されます。

カスタム UI が必要な場合は、MSI のビルド後の操作という非常に複雑な道をたどって VDPROJ によって公開されていない機能を挿入するか、これを公開する InstallShield Professional Edition の Windows Installer XML (WiX) などのツールに切り替える必要があります。

MSI の理解を深めるために、以下を参照してください。

Windows インストーラーでのカスタム アクションのインストール フェーズとスクリプト内実行オプション

于 2013-10-14T12:07:58.243 に答える