ssCAROのブログ

色んなとこで見つけたプログラムのメモ置き場っぽい

FastCopyを使用してのバックアップ

おぼえがき
FastCopyを使用してバックアップをするときいつもヘルプを確認したりと世話しないので。

Dドライブにあるフォルダ、ファイルを全てEドライブにコピーする。

Source: D:\*
DestDir: E:\

AフォルダごとEドライブにコピーする。
EドライブにAフォルダが作成される。

Source: D:\Aフォルダ\
DestDir: E:\

Aフォルダの中身をEドライブにコピーする。
EドライブにAフォルダは作成されない。

Source: D:\Aフォルダ\*
DestDir: E:\

Office 2019のオフラインインストール用のbatファイルを作成

ローカルネットワークのパソコンに、ボリュームライセンスで購入したOffice Standard 2019をオフラインでインストールすることになった。
誰でも出来るようにということで、オフラインインストール用のDVDメディアを作成した。

オフラインでのインストール準備に必要なファイルは前の記事を見てください。
ボリュームライセンスによるExcel 2019 単体のオフラインインストール

オフラインインストール用データのダウンロード

32ビット/64ビットの両方をダウンロードした。

・configuration-x86.xml (32ビット版)

<Configuration>
  <Add SourcePath="C:\Office2019\Download_x86" OfficeClientEdition="32" Channel="PerpetualVL2019">
      <Product ID="Standard2019Volume">
         <Language ID="ja-jp" />
      </Product>
  </Add>
</Configuration>

・configuration-x64.xml (64ビット版)

<Configuration>
  <Add SourcePath="C:\Office2019\Download_x64" OfficeClientEdition="64" Channel="PerpetualVL2019">
      <Product ID="Standard2019Volume">
         <Language ID="ja-jp" />
      </Product>
  </Add>
</Configuration>

コマンドプロンプトから次を実行

setup /download configuration-x86.xml
setup /download configuration-x64.xml

これで、次のフォルダに32ビット/64ビットのデータがダウンロードできる。
C:\Office2019\Download_x86
C:\Office2019\Download_x64

インストーラーファイルの作成

次の2つのファイルを作成する。(シフトJISで作成する)
・configuration-template.xml
・Office_Setup.bat

configuration-template.xml

<Configuration>
  <Add SourcePath="$SourcePath$" OfficeClientEdition="$OfficeClientEdition$" Channel="PerpetualVL2019">
    <Product ID="Standard2019Volume">
      <Language ID="ja-jp" />
    </Product>
  </Add>
</Configuration>

Office_Setup.bat

rem Office 2019 のオフラインインストールを実行します。
rem DVDメディア等にオフラインデータを書き込んでいることを想定しています。
@echo off
cls

:SELECTED_BITS
echo.
echo インストールをする Office のバージョンを入力してください。
echo.
echo 1:32ビット版
echo 2:64ビット版
echo.
set /P InstalledBits="インストールをするバージョンは?:"

rem 構成ファイルのテンプレートのパス
set TemplatePath=%~dp0configuration-template.xml
rem Tempフォルダに出力した構成ファイルののパス
set ConfigurationPath=%temp%\configuration.xml

rem 構成ファイルのパラメータ
if %InstalledBits%==1 goto SELECTED_32BIT
if %InstalledBits%==2 goto SELECTED_64BIT
goto SELECTED_ERROR

rem 32ビット版を選択
:SELECTED_32BIT
set SourcePath=%~dp0Download_x86
set OfficeClientEdition=32
goto INSTALL

rem 64ビット版を選択
:SELECTED_64BIT
set SourcePath=%~dp0Download_x64
set OfficeClientEdition=64
goto INSTALL

rem 入力の間違い
:SELECTED_ERROR
echo.
echo.
echo 1 または 2 を入力してください。
echo.
pause
cls
goto SELECTED_BITS

:INSTALL
rem 既に構成ファイルがあれば削除
if exist %ConfigurationPath% del %ConfigurationPath%
rem テンプレートを読み込みパラメータを置き換えて
rem Tempフォルダに構成ファイルを出力する。
setlocal enabledelayedexpansion
for /f "delims=" %%a in (%TemplatePath%) do (
    set line0=%%a
    set line1=!line0:$SourcePath$=%SourcePath%!
    set line2=!line1:$OfficeClientEdition$=%OfficeClientEdition%!
    echo !line2!>>%ConfigurationPath%
)
endlocal

rem setup.exeを実行
start %~dp0setup.exe /configure %ConfigurationPath%

:END
DVDメディア(USBメモリ)へデータの書き込み

次のフォルダ、ファイルをメディアに書き込む。
・Download_x86 のフォルダ
・Download_x64 のフォルダ
・setup.exe
・Office_Setup.bat
・configuration-template.xml

Office のインストール

DVDメディア(USBメモリ)に書き込まれた、Office_Setup.bat を実行します。
インストールをするバージョン(32ビット/64ビット)を選択してEnterキーを押すとオフラインでのインストールが始まります。

やってることの説明とか
configuration-template.xmlに書かれた$SourcePath$や$OfficeClientEdition$をbatファイルで書き換えて、Tempフォルダにconfiguration.xmlとして出力して、setup.exeに、この出力したxmlを渡して実行している。

Edge仕様のWebBrowserコントロール(WebView)

WebBrowserコントロールを使うとIE仕様になってしまい、サイトによってはJavaScriptが動かなかったりします。
そこで、WebBrowserコントロール(IE)ではなく、WebViewコントロール(Edge)を使用します。

実行環境が決まってるようで、このバージョン以降が必要のようです。

Visual Studio 2017 を起動し、NuGet から次のパッケージをインストールします。
この文字列で検索すると見つかります。
Microsoft.Toolkit.Forms.UI.Controls.WebView」

ツールボックスの「アイテムの選択」から「.NET Framework コンポーネント」タブを開き次のパスのdllを参照から開きます。

C:\Users\<ユーザー名>\.nuget\packages\microsoft.toolkit.forms.ui.controls.webview\5.1.1\lib\net462\Microsoft.Toolkit.Forms.UI.Controls.WebView.dll

あとは、ツールボックスからWebViewコントロールをフォームに張り付けて完成。

フォームを開くとユーザーIDとパスワードが入力されてログインしたいときのサンプルプログラム

Imports Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT

Public Class frmMain
    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        WebView1.Navigate("https://www.example.com/login.html")
    End Sub

    Private Sub WebView1_NavigationCompleted(sender As Object, e As WebViewControlNavigationCompletedEventArgs) Handles WebView1.NavigationCompleted

        If WebView1.DocumentTitle = "ログイン画面" Then
            Dim script As New System.Text.StringBuilder

            'ユーザーID uuuuu を入力
            script.AppendLine(String.Format("document.getElementsByName('UserId').item(0).value = '{0}';", "uuuuu"))
            'パスワード ppppp を入力
            script.AppendLine(String.Format("document.getElementsByName('Password').item(0).value = '{0}';", "ppppp"))

            WebView1.InvokeScript("eval", script.ToString())

            'ログインボタンを探してクリック
            script.Clear()
            script.AppendLine("for (i in document.getElementsByTagName('input')) {")
            script.AppendLine("    if (document.getElementsByTagName('input').item(i).value === 'ログイン') {")
            script.AppendLine("        document.getElementsByTagName('input').item(i).click();")
            script.AppendLine("    }")
            script.AppendLine("}")

            WebView1.InvokeScript("eval", script.ToString())
        End If

    End Sub
End Class

WebBrowserコントロールにあったDocumentプロパティが見当たらなくてinputタグにどうやって値を入れるの?と、だいぶ困った。
WebViewコントロールはJavaScriptでhtmlを操作するようだ。

参考URL: WPFやWindowsフォームでEdgeのWebViewを使うには?[Windows 10 1803以降]:.NET TIPS - @IT
参考URL: 【C#】WebBrowserコントロールをEdgeに対応させる | 思い立ったが吉日

さらにメモ
Chromium仕様のブラウザコントロール(CefSharp)もあるみたい。
参考URL: WinFormsでChromiumブラウザコンポーネント(CefSharp)を使ってみる
参考URL: VB.net(WinForms)でのCefsharpの基本的な扱い方について

SQL Server 2017のメンテナンスプランで「エラー: 18456」が出る

Windows 10 Pro で SQL Server 2017 Standard を動かしている。
DBの自動バックアップを行うためにメンテナンスプランを作成した。
DBの自動バックアップは正常に完了し、バックアップファイルは出来ているが SQL Server のエラーログに次の内容が残っていた。

Login failed for user 'sa'. 理由: パスワードが、指定されたログインのパスワードと一致しませんでした。 [クライアント: <local machine>]
エラー: 18456、重大度: 14、状態: 8。

  • SQL Server Management Studio (SSMS) 17.9.1 を使用してメンテナンスプランを作成した。
  • SQL Server 認証モードと Windows 認証モードに設定している。
  • SSMS で接続するユーザーは sa を使用している。

SQL Server のバグっぽい?という情報もありますが、Windows 認証モードに設定すると直るようです。
SQL Server 認証モードで使いたいのに!

参考URL: Windows2016&SQLSERVER2016メンテナンスプランでエラー18456、重大度:14、状態:8。が出て実行できません。
参考URL: Windows Server 2012 R2-SQLServer 2016 SP1のsaによるメンテナンスプランバックアップにて エラー: 18456発生
参考URL: Maintenance plan - Login failed for user 'sa' on master database

DataGridViewのセルで右寄せにしたときの余白を設定する

DataGridViewのセルに数値データを右寄せで表示したとき、右端に行き過ぎて何となくいやだなと思ったので、セルの余白調整方法を調べた。

dgv.Columns("ITEM_VALUE").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
dgv.Columns("ITEM_VALUE").DefaultCellStyle.Padding = New Padding(0, 0, 20, 0)

右の余白を20に設定したら次のようになった。
f:id:ssCARO:20200630154250p:plain

VMwareにWindows Server 2016(評価版)をインストールできない

VMware PlayerにWindows Server 2016(評価版)をインストールしようとしたらエラーが出たので対処したときのメモ。
インストールは「後からOSをインストール」にしている。

エラーは次のが出た。

unsuccessful
→ EFI Network

  1. VMwareのロゴのときESCを押す。
  2. Boot Managerの画面が表示される。
  3. EFI VMware Virtual SATA CDROM Driveを選択してEnterキーを押す。
  4. Press any Key to boot From CD or DVD...が表示されているときにEnterキーを押す。
  5. インストールが始まる!

参考URL
「unsuccessful EFI Network」と表示されたときの対処

ボリュームライセンスによるExcel 2019 単体のオフラインインストール

ボリュームライセンスExcel 2019のみを購入し、オフラインでインストールしたときのメモ。
オンラインでのインストールを一番下に追記。
インストーラー用batファイルの作成を別記事に追加。

Office 2019からISOのダウンロードがなく、オンラインでインストールするのみになっています。

1.VLSCからExcel 2019のダウンロードでOffice 2019 Deployment ToolのEXEをダウンロードする。

2.ダウンロード後、EXEを実行して展開先に適当なフォルダ("D:\Excel2019")を指定する。
展開先のフォルダにはsetup.exeとサンプルのxmlがある。

3.展開先のフォルダに"configuration.xml"を作成する。
SourcePathはダウンロードしたファイルを保存するフォルダを指定
ファイルの内容は、Excel 2019 32ビット版の日本語です。

<Configuration>
  <Add SourcePath="D:\Excel2019\Download" OfficeClientEdition="32" Channel="PerpetualVL2019">
      <Product ID="Excel2019Volume">
         <Language ID="ja-jp" />
      </Product>
  </Add>
</Configuration>

4.コマンドプロンプトを管理者で実行し、setup.exe(展開先にある)のフォルダに移動して次のコマンドを実行する。

setup /download configuration.xml

ダウンロード中の進捗メータは表示されないので、コマンドが終わるまで待つ。

5.ダウンロードが終われば、"D:\Excel2019"のフォルダごと、USBメモリ等にコピーする。

6.インストールのためにSourcePathのフォルダを書き換える

<Configuration>
  <Add SourcePath="E:\Excel2019\Download" OfficeClientEdition="32" Channel="PerpetualVL2019">
      <Product ID="Excel2019Volume">
         <Language ID="ja-jp" />
      </Product>
  </Add>
</Configuration>

7.コマンドプロンプトを管理者で実行し、setup.exeのフォルダに移動して次のコマンドを実行する。

setup /configure configuration.xml

8.いつものExcelのインストールとあとは同じ。

参考URL:Excel2019の単体ダウンロードについて
参考URL:Excel展開ツールのConfiguration.xml編集について
参考URL:導入 Office 2019 (IT プロフェッショナル向け)
参考URL:Office 展開ツールのオプションの構成
参考URL:Office 展開ツールでサポートされる製品 ID

オンライン インストール

1.2.までは同じです。

3.展開先のフォルダに"configuration.xml"を作成する。
ファイルの内容は、Excel 2019 32ビット版の日本語です。

<Configuration>
  <Add OfficeClientEdition="32" Channel="PerpetualVL2019">
      <Product ID="Excel2019Volume">
         <Language ID="ja-jp" />
      </Product>
  </Add>
</Configuration>

4.コマンドプロンプトを管理者で実行し、setup.exeのフォルダに移動して次のコマンドを実行する。

setup /configure configuration.xml

5.いつものExcelのインストールとあとは同じ。