/// <summary> /// Gets the package size information. /// </summary> /// <returns>Package size information.</returns> /// <privilege>http://tizen.org/privilege/packagemanager.info</privilege> /// <since_tizen> 3 </since_tizen> public async Task <PackageSizeInformation> GetSizeInformationAsync() { TaskCompletionSource <PackageSizeInformation> tcs = new TaskCompletionSource <PackageSizeInformation>(); Interop.PackageManager.PackageManagerSizeInfoCallback sizeInfoCb = (pkgId, sizeInfoHandle, userData) => { if (sizeInfoHandle != IntPtr.Zero && Id == pkgId) { var pkgSizeInfo = PackageSizeInformation.GetPackageSizeInformation(sizeInfoHandle); tcs.TrySetResult(pkgSizeInfo); } lock (_packageManagerSizeInfoCallbackDict) { _packageManagerSizeInfoCallbackDict.Remove(userData); } }; IntPtr callbackId; lock (_packageManagerSizeInfoCallbackDict) { callbackId = (IntPtr)_callbackId++; _packageManagerSizeInfoCallbackDict[callbackId] = sizeInfoCb; } Interop.PackageManager.ErrorCode err = Interop.PackageManager.PackageManagerGetSizeInfo(Id, sizeInfoCb, callbackId); if (err != Interop.PackageManager.ErrorCode.None) { tcs.TrySetException(PackageManagerErrorFactory.GetException(err, "Failed to get total package size info of " + Id)); } return(await tcs.Task.ConfigureAwait(false)); }
/// <summary> /// Retrieves all the application IDs of this package. /// </summary> /// <param name="type">Optional: AppType enumeration value.</param> /// <returns>Returns a dictionary containing all the application information for a given application type.</returns> /// <since_tizen> 3 </since_tizen> public IEnumerable <ApplicationInfo> GetApplications(ApplicationType type) { List <ApplicationInfo> appInfoList = new List <ApplicationInfo>(); Interop.Package.PackageInfoAppInfoCallback cb = (Interop.Package.AppType appType, string appId, IntPtr userData) => { appInfoList.Add(new ApplicationInfo(appId)); return(true); }; IntPtr packageInfoHandle; Interop.PackageManager.ErrorCode err = Interop.Package.PackageInfoCreate(Id, out packageInfoHandle); if (err != Interop.PackageManager.ErrorCode.None) { Log.Warn(LogTag, string.Format("Failed to create native handle for package info of {0}. err = {1}", Id, err)); } err = Interop.Package.PackageInfoForeachAppInfo(packageInfoHandle, (Interop.Package.AppType)type, cb, IntPtr.Zero); if (err != Interop.PackageManager.ErrorCode.None) { Log.Warn(LogTag, string.Format("Failed to application info of {0}. err = {1}", Id, err)); } err = Interop.Package.PackageInfoDestroy(packageInfoHandle); if (err != Interop.PackageManager.ErrorCode.None) { Log.Warn(LogTag, string.Format("Failed to destroy native handle for package info of {0}. err = {1}", Id, err)); } return(appInfoList); }
internal static Package GetPackage(IntPtr packageInfoHandle) { String packageId; Interop.PackageManager.ErrorCode err = Interop.Package.PackageInfoGetPackage(packageInfoHandle, out packageId); if (err != Interop.PackageManager.ErrorCode.None) { throw PackageManagerErrorFactory.GetException(err, "Failed to get package id for given package handle."); } return(CreatePackage(packageInfoHandle, packageId)); }
/// <summary> /// Compares the certificate information with the given package ID. /// </summary> /// <param name="packageId">ID of the package.</param> /// <returns>Certificate comparison result.</returns> /// <exception cref="ArgumentException">Thrown when a failed input package ID is invalid.</exception> /// <exception cref="System.IO.IOException">Thrown when the method failed due to an internal I/O error.</exception> /// <since_tizen> 3 </since_tizen> public CertCompareResultType CompareCertInfo(string packageId) { Interop.PackageManager.CertCompareResultType compareResult; Interop.PackageManager.ErrorCode err = Interop.PackageManager.PackageManagerCompareCertInfo(Id, packageId, out compareResult); if (err != Interop.PackageManager.ErrorCode.None) { throw PackageManagerErrorFactory.GetException(err, "Failed to compare package cert info"); } return((CertCompareResultType)compareResult); }
internal static PackageDrm GenerateLicenseRequest(string responseData) { string requestData; string licenseUrl; Interop.PackageManager.ErrorCode err = Interop.PackageManager.PackageManagerDrmGenerateLicenseRequest(responseData, out requestData, out licenseUrl); if (err != Interop.PackageManager.ErrorCode.None) { throw PackageManagerErrorFactory.GetException(err, "Failed to generate license request"); } PackageDrm packageDrm = CreateDrmRequest(responseData, requestData, licenseUrl); return(packageDrm); }
private static List <PackageDependencyInformation> GetPackageDependencyDependsOn(IntPtr packageInfoHandle) { List <PackageDependencyInformation> dependencies = new List <PackageDependencyInformation>(); Interop.Package.PackageInfoDependencyInfoCallback dependencyInfoCb = (from, to, type, requiredVersion, userData) => { dependencies.Add(PackageDependencyInformation.GetPackageDependencyInformation(from, to, type, requiredVersion)); return(true); }; Interop.PackageManager.ErrorCode err = Interop.Package.PackageInfoForeachDependencyInfoDependsOn(packageInfoHandle, dependencyInfoCb, IntPtr.Zero); if (err != Interop.PackageManager.ErrorCode.None) { Log.Warn(LogTag, string.Format("Failed to get dependency info. err = {0}", err)); } return(dependencies); }
private static List <string> GetPackagePrivilegeInformation(IntPtr packageInfoHandle) { List <string> privileges = new List <string>(); Interop.Package.PackageInfoPrivilegeInfoCallback privilegeInfoCb = (privilege, userData) => { privileges.Add(privilege); return(true); }; Interop.PackageManager.ErrorCode err = Interop.Package.PackageInfoForeachPrivilegeInfo(packageInfoHandle, privilegeInfoCb, IntPtr.Zero); if (err != Interop.PackageManager.ErrorCode.None) { Log.Warn(LogTag, string.Format("Failed to get privilage info. err = {0}", err)); } return(privileges); }
internal static Package GetPackage(string packageId) { IntPtr packageInfoHandle; Interop.PackageManager.ErrorCode err = Interop.Package.PackageInfoCreate(packageId, out packageInfoHandle); if (err != Interop.PackageManager.ErrorCode.None) { throw PackageManagerErrorFactory.GetException(err, string.Format("Failed to create native handle for package info of {0}", packageId)); } Package package = CreatePackage(packageInfoHandle, packageId); err = Interop.Package.PackageInfoDestroy(packageInfoHandle); if (err != Interop.PackageManager.ErrorCode.None) { Log.Warn(LogTag, string.Format("Failed to destroy native handle for package info of {0}. err = {1}", packageId, err)); } return(package); }
internal static IReadOnlyDictionary <CertificateType, PackageCertificate> GetPackageCertificates(IntPtr packageInfoHandle) { Dictionary <Interop.Package.CertificateType, string> nativeCertificates = new Dictionary <Interop.Package.CertificateType, string>(); Interop.Package.PackageInfoCertificateInfoCallback certificateInfoCb = (handle, certType, certValue, userData) => { if (certValue == null) { certValue = string.Empty; } nativeCertificates.Add(certType, certValue); return(true); }; Interop.PackageManager.ErrorCode err = Interop.Package.PackageInfoForeachCertificateInfo(packageInfoHandle, certificateInfoCb, IntPtr.Zero); if (err != Interop.PackageManager.ErrorCode.None) { Log.Warn(LogTag, string.Format("Failed to get certificate info. err = {0}", err)); } Dictionary <CertificateType, PackageCertificate> certificates = new Dictionary <CertificateType, PackageCertificate>(); string authorRootCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.AuthorRootCertificate); string authorIntermediateCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.AuthorIntermediateCertificate); string aurthorSignerCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.AuthorSignerCertificate); certificates.Add(CertificateType.Author, new PackageCertificate(authorRootCertificate, authorIntermediateCertificate, aurthorSignerCertificate)); string distRootCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.DistributorRootCertificate); string distIntermediateCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.DistributorIntermediateCertificate); string distSignerCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.DistributorSignerCertificate); certificates.Add(CertificateType.Distributor, new PackageCertificate(distRootCertificate, distIntermediateCertificate, distSignerCertificate)); string dist2RootCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.Distributor2RootCertificate); string dist2IntermediateCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.Distributor2IntermediateCertificate); string dist2SignerCertificate = GetValue(nativeCertificates, Interop.Package.CertificateType.Distributor2SignerCertificate); certificates.Add(CertificateType.Distributor2, new PackageCertificate(dist2RootCertificate, dist2IntermediateCertificate, dist2SignerCertificate)); return(certificates); }