2020年12月9日水曜日

(2020.12) SAP Crystal Reports と Visual Studio 2019 (クリスタルレポート SP26)





最近、とあるブログを参考にしたら壊れていたVS上のクリレポ環境が更に壊れる
と、散々な目にあったので、仕方なく自己解決




やりたいこと
・VisualStudio2010で作ったアプリをVisualStudio2019でメンテしたい
・クリスタルレポートのレポートも10年前に開発したが、VisualStudio2019で開発出来る様にしたい



開発機
・windows10 PRO 64bit
・VisualStudio2019
・VisualStudioInstaller
 拡張機能→拡張機能の管理→MicrosoftVisualStudioInstallerProjectを探しインストール





アプリ
・VisualStudio2010で作成
・WindowsFormソリューション
・VisualStudioInstaller




クリスタルレポートの状態 : レポートの壊れ方
・レポートを開くと0と1の羅列 or レポートは開け編集出来るが実行時エラー
・VS2010でもVS2019でも駄目

レポートの実行エラーはレポートが要求しているVerと、
インストールされているSAPクリレポVerが合っていない
色々触るとエラーメッセージは変化するが結局動かず



が、インストーラーを作りMSIをインストールすると、
エンドユーザー環境でレポートが動く(VS内クリレポと客先ランタイムのVerが合致)
 ↓
開発機で作成中アプリが要求するVerと、開発PCにインストールされているSAPクリスタルレポートのver問題


問題の原因からして、VS上の参照設定を正しくすれば問題なかったよう思います
よって解決というより、SAPクリスタルレポートの最新化(SP26化)です






最新化手段
・以下の、SAP+ Visual Studioの聖地ページを元に開発(VS)実行(PC)環境を改造




手順
・上記ページより必要なものをDLし、PCへインストール
・プロジェクトの参照設定を全て消し、新しいものに置き換え
・ついでにターゲットフレームワークを.net Framework4.0から4.7.2へ変更(私的要件)
・VisualStudioInstallerでインストーラーを作り、VS上のクリーンWindows10へインストール(私的要件)









1.ターゲット:ページOverviewにある
  ・VS 2019 - SP 26 and higher ( issues resolved )

2.上記ページは一応url翻訳して全て目を通したが、最小手順で行う
  ・インストールするとき管理者でログインしていても「管理者で実行」を選択
   そうしないとVSと結合されない・・のみ採用

3.メール登録、ログイン、必須アプリをDL、インストール

 


自PCは64Bit、よって以下DLし、インストール

 A. SAP Crystal Reports for Visual Studio (SP29) installation package for Microsoft Visual Studio IDE
  統合開発環境:VisualStudioでクリスタルレポート開発を行うために必要

 B. SAP Crystal Reports for Visual Studio (SP29) runtime engine for .NET framework MSI (64-bit)
  ランタイム:自PCで実行するときに使用される

== 検証用(エンドユーザー用)==
 C. SAP Crystal Reports for Visual Studio (SP29) runtime (64-bit)
  クリスタルレポートを含むアプリを動作させる際に必要

※マージモジュールはインストーラーに組み込まなかった:もういいでしょ?2020年だし




  ・・色々DLしたが、使用したのはA(とB)のみ・・




Aをインストール後、次の画面が表示されるので64Bitランタイムをインストール
※この作業を行うとBがインストールされるため、別途Bをインストールしなくてよい





インストール後 Ver13.0.29になった
これでSAPクリスタルレポートのインストールは完了








VS2019

 参照設定
 これは大変重要
 元々参照していたDLL名を覚えておき、参照設定を削除
 このときプロジェクトのターゲットフレームワークを
  .net4.0 から .net4.7.2へ変更(通常不要:理由上記)
 参照設定を行う
  ターゲットフレームワークに注意
 ファイルバージョン13.0.29
 SAP SEバージョン13.0.4000



 参照設定完了



4.この状態でソリューションをリビルド
  レポートを開いてみるとこれまで通りに設計が出来る
  10年前に作ったレポートも最近作ったレポートも表示編集出来る
  実行するとレポートを開くタイミングで発生していたエラーが消えレポートが表示された



以前はDLL5本くらい
今回ビルドするとこんな沢山クリスタルレポート関連DLLがコピられた






これでSAPクリスタルレポートのVS2019化(SAP Crystal Reports SP29化)は完了
古いプロジェクトに作られているレポートの編集も問題なく


ただし、このアプリをエンドユーザーPCへインストールする場合、
新しいマージモジュールをインストールしないと動かないので注意
3.画像のマージモジュールをインストールする




検証
VS上のクリーンなWindows10Pro64bit
・エンドユーザー用ランタイム(64Bit)インストール
・セットアッププログラムの問題から作成したセットアップファイルでなく.msiをインストール
 ↓
問題なくレポートは表示された
※今回マージモジュールはインストーラーに組み込んでいない









ここからWindowsインストーラー

・Windowsフォームアプリは配布が面倒(アプリの作り次第)
・インストーラーは一応作る


 とても良いページがあるので そちら を参照した方が良いと思います





必須モジュールをメーカー配布元からインストールのオプションを選ぶと
エンドユーザーPCでインストールとき、セットアップexeからインストールできません
理由はクリスタルレポート必須モジュール(マージモジュール)DL先がSAP社でなく旧ビジネスオブジェクト社
この流れを正常にしたいなら上記ページを参考に


クリスタルレポートのマージモジュールをインストーラーに入れるなら
こちら のページが有効と思います


こんな面白いページもありました(古い文章なので文字を見る程度が良いかと)
この解説が良い感じです
 ↓
・Crystal Reports SDK が使用される .NET アプリケーションがデプロイされ、Crystal Reports デザイナがインストールされていないコンピュータには、Crystal Reports ランタイムが必要です。
 ↑
こういった説明、最近のSAPクリレポサイトにはありませんね・・



以上