カスタムWIXアクションでC++ DLLを作成しました。これは、インストール時にアプリケーションのプロファイルを作成/更新し、アンインストール時に削除します。
公式のnVidia APIにはほとんどドキュメント化されていませんが、そのために必要なNvAPI_DRS_ *機能があります。
はここにワークフローの:NvAPI_Initialize
は(失敗した場合には、ユーザーは、NVIDIA GPUを持っていないことを意味し、それはエラーではありません)、NvAPI_DRS_CreateSession
、NvAPI_DRS_LoadSettings
、NvAPI_DRS_FindProfileByName
。
の場合はNvAPI_DRS_CreateProfile
、見つかった、とNvAPI_DRS_SetSetting
を3回呼び出し、3つのDWORDのプロパティ設定していませんでした。そして、
- SHIM_MCCOMPAT_ID = SHIM_MCCOMPAT_ENABLE
- SHIM_RENDERING_MODE_ID = SHIM_RENDERING_MODE_ENABLE
- SHIM_RENDERING_OPTIONS_ID = SHIM_RENDERING_OPTIONS_DEFAULT_RENDERING_MODE
を、NvAPI_DRS_GetProfileInfo
に電話してくださいその後、NvAPI_DRS_EnumApplications
が続き、EXEパスが検索されます。
アンインストールするときに、NvAPI_DRS_FindProfileByName
、次にNvAPI_DRS_DeleteProfile
を呼び出して、完全なプロファイルを削除します。
再インストールとアップグレードでは、両方を行います。最初に削除してから追加します。
最後にNvAPI_DRS_SaveSettings
を忘れないでください。
P.S.予想外のことは、NVDIAはNVDRS_APPLICATION :: appNameフィールドに格納されているパスを「正規化」し、それらを小文字に変換し、さらに'\'
を'/'
に置き換えることです。この "正規化"のために、標準の文字列比較関数はそれらのためには機能しません。