ClickOnceでハマる

C#で開発したクライアントアプリケーションをClickOnceで配布する際にハマった2点 Windows10へのインストール イントラのファイルサーバに置いてある証明書が設定されていないClickOnceをWindows 10で実行すると、「コンピューターにセキュリティ上の問題を発生させるため、管理者がこのアプリケーションをブロックしました。…」と表示され、[閉じる]ボタンしか表示されないために、インストールができない。 Windows 7では普通にインストールできる。 https://answers.microsoft.com/ja-jp/windows/forum/apps_windows_10-winapps-appscat_tools/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC/45f6621c-35ca-4395-bdd4-685705e9fae0 にあるレジストリの[LocaIntranet]の値をEnabledにする必要があった。 設定変更は直ちに反映される(OS再起動は不要) 関連アセンブリの添付 上記をクリアしたうえでClickOnceを公開し、クライアントで実行すると以下のエラーが表示される。 このアプリケーションをインストールまたは実行できません。このアプリケーションでは、まずグローバルアセンブリキャッシュ(GAC)にアセンブリ Microsoft.**** バージョン *** をインストールする必要があります。 ****にはVisualStudio関連のアセンブリ各種が出力される。Visual Studio 2017 Express Desktopの時は発生しなかったのだが、2017 Professionalにしたら発生した。 どうも必要なアセンブリ(.dll)を添付できていないようで、事例は異なるが、 http://thinkami.hatenablog.com/entry/2014/09/09/062440 にあるように公開設定で全てのアセンブリを「必須コンポーネント(自動)」→「含む」に変更すると解消した。

<span title='2018-07-30 00:00:00 +0900 +0900'>July 30, 2018</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

.Netプログラムの配布

今さら、とは思われるとは思いますが… 当社の社内システムは、外部業者に保守を依頼している販売管理システムとパッケージの会計システムを除いて、はほぼAccessでした。データもファイルに含んでいるタイプ。 なので、各自ファイルをデスクトップにコピーするとデータが共有できなくなるので、ファイルサーバにファイルを置いて、各自が直接実行する形で利用していました。たまに動作がおかしくなったのは、同時起動でファイルが壊れたりしたのではないかと思ってます。 現在、社内システムをC# + RDBMS(SQL Server, MariaDB)に移行中。 上記の感覚で、C#のプログラムは、dllも含めてファイルサーバに置いて、各自直接実行してもらってました。さすがに動作がおかしくなることはないのですが、dllも含めて手動で配置しないといけないとか、ファイルサーバの場所を忘れると実行できないとか、いまいちだな~と思ってました。 そう、ClickOnce。 プロジェクトの設定にて「発行」の項目でファイルサーバを指定して発行すれば、インストーラが生成され、それをインストールしてもらえば以降はスタートメニューから起動可能。バージョンアップ時の更新も勝手に検知してやってくれる。最高!! 10年遅れ? でMicrosoftさんの素晴らしさを実感しました。

<span title='2017-10-12 17:52:37 +0900 +0900'>October 12, 2017</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41