예제 #1
0
        /// <summary>
        /// DLL をインストールします。
        /// </summary>
        /// <param name="importDllPath">インポート先のパス</param>
        /// <returns>dll 格納パス</returns>
        private string InstallDll(string importDllPath = null)
        {
            importDllPath = dllSelectionRequest(importDllPath);
            if (importDllPath is null)
            {
                // dll のパス取得に失敗

                return(null);
            }
            string dllFileName = System.IO.Path.GetFileName(importDllPath);
            string dllPath     = System.IO.Path.Combine(InstallDllDirectory, dllFileName);
            bool   isReboot    = false;

            if (File.Exists(dllPath))
            {
                // dll は既にインポート済み

                string msg = string.Format(CapyCSS.Language.Instance["SYSTEM_ModuleControler_01"], dllFileName);
                var    ret = ControlTools.ShowSelectMessage(msg, DLL_MESSAGE_TITLE, MessageBoxButton.YesNo);
                if (ret == MessageBoxResult.No)
                {
                    return(null);
                }

                // dll を上書きインストールを選択した
                isReboot = true;
            }
            File.Copy(importDllPath, dllPath, true);
            if (isReboot)
            {
                // 上書きインストール成功

                string msg = string.Format(CapyCSS.Language.Instance["SYSTEM_ModuleControler_02"], dllFileName);
                ControlTools.ShowMessage(msg, DLL_MESSAGE_TITLE);

                // アプリケーションの終了
                CommandCanvasList.CallClosing?.Invoke();
                return(null);
            }
            else
            {
                // インストール成功

                string msg = string.Format(CapyCSS.Language.Instance["SYSTEM_ModuleControler_03"], dllFileName);
                ControlTools.ShowMessage(msg, DLL_MESSAGE_TITLE);
            }

            // ドロップダウンリストに登録
            InportList.Items.Add(dllPath);
            return(dllPath);
        }