アプリケーションを実行していると、以下の行で例外が発生(Access Violation)する環境がある
std::lock_guard<std::mutex> lock(connection_string_mutex_);デバッグのログを色々と埋め込んで状況を絞り込んで検証していったところ
AIにより
という状況に辿りついた。
インストーラでRuntimeのチェックをしていたが、どんどん新しいRuntimeが出て、
それでも動作するので、Runtimeのバージョンチェックをするのは得策でないという結論になり、
インストーラでのチェックを諦めたのだが、これは何とかしたい
そこで、古いバージョンで動かないRuntimeがインストールされている時だけエラーにする処理を模索した
インストーラでRuntimeのチェックをしていたが、どんどん新しいRuntimeが出て、
それでも動作するので、Runtimeのバージョンチェックをするのは得策でないという結論になり、
インストーラでのチェックを諦めたのだが、これは何とかしたい
そこで、古いバージョンで動かないRuntimeがインストールされている時だけエラーにする処理を模索した
<!-- x86 版 -->
<!-- Minor バージョン番号を整数で取得 -->
<Property Id="VC_REDIST_MINOR_X86" Secure="yes">
<RegistrySearch Id="VCRedistMinorX86"
Root="HKLM"
Key="SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86"
Name="Minor"
Type="raw"
Win64="no" />
</Property>
<Condition Message="Visual C++ 2022 Redistributable (x86) 14.37 以降が必要です。 vc_redist.x86.exe をインストールしてください。">
NOT (VC_REDIST_MINOR_X86 AND VC_REDIST_MINOR_X86 < "#37")
</Condition>
<!-- x64 版 -->
<!-- Minor バージョン番号を整数で取得 -->
<Property Id="VC_REDIST_MINOR_X64" Secure="yes">
<RegistrySearch Id="VCRedistMinorX64"
Root="HKLM"
Key="SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64"
Name="Minor"
Type="raw" />
</Property>
<!-- Minor が存在して 37 未満の場合のみエラー -->
<Condition Message="Visual C++ 2022 Redistributable (x64) 14.37 以降が必要です。 vc_redist.x64.exe をインストールしてください。">
NOT (VC_REDIST_MINOR_X64 AND VC_REDIST_MINOR_X64 < "#37")
</Condition>
いやはや、AIの進化は凄まじい。AIの助けなしだと1週間は時間を取られていたかもしれない。

0 件のコメント:
コメントを投稿