-- v2: include: Add Windows.ApplicationModel.IPackage3 interface definition. include: Add Windows.ApplicationModel.Core.AppListEntry runtimeclass definition. widl: Guard against re-import of the main input file. include: Add Windows.ApplicationModel.PackageStatus runtimeclass definition. include: Add Windows.ApplicationModel.AppDisplayInfo runtimeclass definition. include: Add Windows.Storage.Streams.RandomAccessStreamReference runtimeclass definition. include: Add Windows.Management.Deployment.PackageManager runtimeclass definition. include: Add Windows.Management.Deployment.PackageUserInformation runtimeclass definition. include: Add Windows.Management.Deployment.DeploymentResult runtimeclass definition.
From: Rémi Bernon rbernon@codeweavers.com
--- include/Makefile.in | 1 + include/windows.management.deployment.idl | 54 +++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 include/windows.management.deployment.idl
diff --git a/include/Makefile.in b/include/Makefile.in index f4475d9438f..025fdca7326 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -835,6 +835,7 @@ SOURCES = \ windows.graphics.effects.idl \ windows.graphics.holographic.idl \ windows.h \ + windows.management.deployment.idl \ windows.media.closedcaptioning.idl \ windows.media.devices.idl \ windows.media.idl \ diff --git a/include/windows.management.deployment.idl b/include/windows.management.deployment.idl new file mode 100644 index 00000000000..91a7488f650 --- /dev/null +++ b/include/windows.management.deployment.idl @@ -0,0 +1,54 @@ +/* + * Copyright 2023 Rémi Bernon for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifdef __WIDL__ +#pragma winrt ns_prefix +#endif + +import "windows.foundation.idl"; +import "windows.applicationmodel.idl"; + +namespace Windows.Management.Deployment { + + interface IDeploymentResult; + + runtimeclass DeploymentResult; + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.Management.Deployment.DeploymentResult), + uuid(2563b9ae-b77d-4c1f-8a7b-20e6ad515ef3) + ] + interface IDeploymentResult : IInspectable + { + [propget] HRESULT ErrorText([out, retval] HSTRING *value); + [propget] HRESULT ActivityId([out, retval] GUID *value); + [propget] HRESULT ExtendedErrorCode([out, retval] HRESULT *value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + marshaling_behavior(agile) + ] + runtimeclass DeploymentResult + { + [default] interface Windows.Management.Deployment.IDeploymentResult; + [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Management.Deployment.IDeploymentResult2; + } + +}
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.management.deployment.idl | 34 +++++++++++++++++++++++ 1 file changed, 34 insertions(+)
diff --git a/include/windows.management.deployment.idl b/include/windows.management.deployment.idl index 91a7488f650..07a6c9b711e 100644 --- a/include/windows.management.deployment.idl +++ b/include/windows.management.deployment.idl @@ -25,9 +25,23 @@ import "windows.applicationmodel.idl";
namespace Windows.Management.Deployment {
+ typedef enum PackageInstallState PackageInstallState; + interface IDeploymentResult; + interface IPackageUserInformation;
runtimeclass DeploymentResult; + runtimeclass PackageUserInformation; + + [contract(Windows.Foundation.UniversalApiContract, 1.0)] + enum PackageInstallState + { + NotInstalled = 0, + Staged = 1, + Installed = 2, + [contract(Windows.Foundation.UniversalApiContract, 2.0)] + Paused = 6, + };
[ contract(Windows.Foundation.UniversalApiContract, 1.0), @@ -41,6 +55,17 @@ namespace Windows.Management.Deployment { [propget] HRESULT ExtendedErrorCode([out, retval] HRESULT *value); }
+ [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.Management.Deployment.PackageUserInformation), + uuid(f6383423-fa09-4cbc-9055-15ca275e2e7e) + ] + interface IPackageUserInformation : IInspectable + { + [propget] HRESULT UserSecurityId([out, retval] HSTRING *value); + [propget] HRESULT InstallState([out, retval] Windows.Management.Deployment.PackageInstallState *value); + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile) @@ -51,4 +76,13 @@ namespace Windows.Management.Deployment { [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Management.Deployment.IDeploymentResult2; }
+ [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + marshaling_behavior(agile) + ] + runtimeclass PackageUserInformation + { + [default] interface Windows.Management.Deployment.IPackageUserInformation; + } + }
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.management.deployment.idl | 121 ++++++++++++++++++++++ 1 file changed, 121 insertions(+)
diff --git a/include/windows.management.deployment.idl b/include/windows.management.deployment.idl index 07a6c9b711e..d78c64680f3 100644 --- a/include/windows.management.deployment.idl +++ b/include/windows.management.deployment.idl @@ -25,14 +25,61 @@ import "windows.applicationmodel.idl";
namespace Windows.Management.Deployment {
+ typedef enum DeploymentOptions DeploymentOptions; + typedef enum DeploymentProgressState DeploymentProgressState; typedef enum PackageInstallState PackageInstallState; + typedef enum PackageState PackageState; + + typedef struct DeploymentProgress DeploymentProgress;
interface IDeploymentResult; + interface IPackageManager; interface IPackageUserInformation;
runtimeclass DeploymentResult; + runtimeclass PackageManager; runtimeclass PackageUserInformation;
+ declare { + interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri *>; + interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Uri *>; + interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *>; + interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Package *>; + interface Windows.Foundation.Collections.IIterable<Windows.Management.Deployment.PackageUserInformation *>; + interface Windows.Foundation.Collections.IIterator<Windows.Management.Deployment.PackageUserInformation *>; + interface Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress>; + interface Windows.Foundation.AsyncOperationProgressHandler<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress>; + interface Windows.Foundation.AsyncOperationWithProgressCompletedHandler<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress>; + } + + [contract(Windows.Foundation.UniversalApiContract, 1.0)] + [flags] + enum DeploymentOptions + { + None = 0x0, + ForceApplicationShutdown = 0x1, + DevelopmentMode = 0x2, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] + InstallAllResources = 0x20, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] + ForceTargetApplicationShutdown = 0x40, + [contract(Windows.Foundation.UniversalApiContract, 4.0)] + RequiredContentGroupOnly = 0x100, + [contract(Windows.Foundation.UniversalApiContract, 7.0)] + ForceUpdateFromAnyVersion = 0x40000, + [contract(Windows.Foundation.UniversalApiContract, 10.0)] + RetainFilesOnFailure = 0x200000, + [contract(Windows.Foundation.UniversalApiContract, 10.0)] + StageInPlace = 0x400000, + }; + + [contract(Windows.Foundation.UniversalApiContract, 1.0)] + enum DeploymentProgressState + { + Queued = 0, + Processing = 1, + }; + [contract(Windows.Foundation.UniversalApiContract, 1.0)] enum PackageInstallState { @@ -43,6 +90,22 @@ namespace Windows.Management.Deployment { Paused = 6, };
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)] + enum PackageState + { + Normal = 0, + LicenseInvalid = 1, + Modified = 2, + Tampered = 3, + }; + + [contract(Windows.Foundation.UniversalApiContract, 1.0)] + struct DeploymentProgress + { + Windows.Management.Deployment.DeploymentProgressState state; + UINT32 percentage; + }; + [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Management.Deployment.DeploymentResult), @@ -55,6 +118,45 @@ namespace Windows.Management.Deployment { [propget] HRESULT ExtendedErrorCode([out, retval] HRESULT *value); }
+ [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.Management.Deployment.PackageManager), + uuid(9a7d4b65-5e8f-4fc7-a2e5-7f6925cb8b53) + ] + interface IPackageManager : IInspectable + { + [overload("AddPackageAsync")] + HRESULT AddPackageAsync([in] Windows.Foundation.Uri *uri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri *> *dependencies, [in] Windows.Management.Deployment.DeploymentOptions options, + [out, retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress> **operation); + HRESULT UpdatePackageAsync([in] Windows.Foundation.Uri *uri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri *> *dependencies, [in] Windows.Management.Deployment.DeploymentOptions options, + [out, retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress> **operation); + HRESULT RemovePackageAsync([in] HSTRING name, [out, retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress> **operation); + HRESULT StagePackageAsync([in] Windows.Foundation.Uri *uri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri *> *dependencies, + [out, retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress> **operation); + [overload("RegisterPackageAsync")] + HRESULT RegisterPackageAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri *> *dependencies, [in] Windows.Management.Deployment.DeploymentOptions options, + [out, retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress> **operation); + [overload("FindPackages")] + HRESULT FindPackages([out, retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *> **packages); + [overload("FindPackagesForUser")] + HRESULT FindPackagesByUserSecurityId([in] HSTRING sid, [out, retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *> **packages); + [overload("FindPackages")] + HRESULT FindPackagesByNamePublisher([in] HSTRING name, [in] HSTRING publisher, [out, retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *> **packages); + [overload("FindPackagesForUser")] + HRESULT FindPackagesByUserSecurityIdNamePublisher([in] HSTRING sid, [in] HSTRING name, [in] HSTRING publisher, [out, retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *> **packages); + HRESULT FindUsers([in] HSTRING name, [out, retval] Windows.Foundation.Collections.IIterable<Windows.Management.Deployment.PackageUserInformation *> **users); + HRESULT SetPackageState([in] HSTRING name, [in] Windows.Management.Deployment.PackageState state); + [overload("FindPackage")] + HRESULT FindPackageByPackageFullName([in] HSTRING name, [out, retval] Windows.ApplicationModel.Package **package); + HRESULT CleanupPackageForUserAsync([in] HSTRING name, [in] HSTRING sid, [out, retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult *, Windows.Management.Deployment.DeploymentProgress> **operation); + [overload("FindPackages")] + HRESULT FindPackagesByPackageFamilyName([in] HSTRING family_name, [out, retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *> **packages); + [overload("FindPackagesForUser")] + HRESULT FindPackagesByUserSecurityIdPackageFamilyName([in] HSTRING sid, [in] HSTRING family_name, [out, retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *> **packages); + [overload("FindPackageForUser")] + HRESULT FindPackageByUserSecurityIdPackageFullName([in] HSTRING sid, [in] HSTRING name, [out, retval] Windows.ApplicationModel.Package **package); + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Management.Deployment.PackageUserInformation), @@ -76,6 +178,25 @@ namespace Windows.Management.Deployment { [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Management.Deployment.IDeploymentResult2; }
+ [ + activatable(Windows.Foundation.UniversalApiContract, 1.0), + contract(Windows.Foundation.UniversalApiContract, 1.0), + marshaling_behavior(agile), + threading(both) + ] + runtimeclass PackageManager + { + [default] interface Windows.Management.Deployment.IPackageManager; + [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Management.Deployment.IPackageManager2; + [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Management.Deployment.IPackageManager3; + [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Management.Deployment.IPackageManager4; + [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Management.Deployment.IPackageManager5; + [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Management.Deployment.IPackageManager6; + [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Management.Deployment.IPackageManager7; + [contract(Windows.Foundation.UniversalApiContract, 7.0)] interface Windows.Management.Deployment.IPackageManager8; + [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.Management.Deployment.IPackageManager9; + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile)
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.storage.streams.idl | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/include/windows.storage.streams.idl b/include/windows.storage.streams.idl index 5bdeb3689ff..8e8aba3b377 100644 --- a/include/windows.storage.streams.idl +++ b/include/windows.storage.streams.idl @@ -34,10 +34,12 @@ namespace Windows.Storage.Streams { interface IOutputStream; interface IRandomAccessStream; interface IRandomAccessStreamReference; + interface IRandomAccessStreamReferenceStatics; interface IRandomAccessStreamStatics; interface IRandomAccessStreamWithContentType; runtimeclass Buffer; runtimeclass RandomAccessStream; + runtimeclass RandomAccessStreamReference;
declare { interface Windows.Foundation.Collections.IIterable<Windows.Storage.Streams.IRandomAccessStream *>; @@ -138,4 +140,14 @@ namespace Windows.Storage.Streams { { [default] interface Windows.Storage.Streams.IBuffer; } + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + marshaling_behavior(agile), + static(Windows.Storage.Streams.IRandomAccessStreamReferenceStatics, Windows.Foundation.UniversalApiContract, 1.0) + ] + runtimeclass RandomAccessStreamReference + { + [default] interface Windows.Storage.Streams.IRandomAccessStreamReference; + } }
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.applicationmodel.idl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
diff --git a/include/windows.applicationmodel.idl b/include/windows.applicationmodel.idl index 9514c06a60e..73dcb32d93b 100644 --- a/include/windows.applicationmodel.idl +++ b/include/windows.applicationmodel.idl @@ -27,11 +27,13 @@ import "windows.system.idl"; namespace Windows.ApplicationModel { typedef struct PackageVersion PackageVersion;
+ interface IAppDisplayInfo; interface IPackage; interface IPackageId; interface IPackageIdWithMetadata; interface IPackageStatics;
+ runtimeclass AppDisplayInfo; runtimeclass Package; runtimeclass PackageId;
@@ -52,6 +54,18 @@ namespace Windows.ApplicationModel { UINT16 Revision; };
+ [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.ApplicationModel.AppDisplayInfo), + uuid(1aeb1103-e4d4-41aa-a4f6-c4a276e79eac) + ] + interface IAppDisplayInfo : IInspectable + { + [propget] HRESULT DisplayName([out, retval] HSTRING *value); + [propget] HRESULT Description([out, retval] HSTRING *value); + HRESULT GetLogo([in] Windows.Foundation.Size size, [out, retval] Windows.Storage.Streams.RandomAccessStreamReference **value); + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.ApplicationModel.Package), @@ -103,6 +117,16 @@ namespace Windows.ApplicationModel { [propget] HRESULT Current([out, retval] Windows.ApplicationModel.Package **value); }
+ [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + marshaling_behavior(agile), + threading(both) + ] + runtimeclass AppDisplayInfo + { + [default] interface Windows.ApplicationModel.IAppDisplayInfo; + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile),
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.applicationmodel.idl | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
diff --git a/include/windows.applicationmodel.idl b/include/windows.applicationmodel.idl index 73dcb32d93b..70cf9178de8 100644 --- a/include/windows.applicationmodel.idl +++ b/include/windows.applicationmodel.idl @@ -29,6 +29,7 @@ namespace Windows.ApplicationModel {
interface IAppDisplayInfo; interface IPackage; + interface IPackageStatus; interface IPackageId; interface IPackageIdWithMetadata; interface IPackageStatics; @@ -36,6 +37,7 @@ namespace Windows.ApplicationModel { runtimeclass AppDisplayInfo; runtimeclass Package; runtimeclass PackageId; + runtimeclass PackageStatus;
declare { interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *>; @@ -79,6 +81,27 @@ namespace Windows.ApplicationModel { [propget] HRESULT Dependencies([out, retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Package *> **value); }
+ [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.ApplicationModel.PackageStatus), + uuid(5fe74f71-a365-4c09-a02d-046d525ea1da) + ] + interface IPackageStatus : IInspectable + { + HRESULT VerifyIsOK([out, retval] boolean *value); + [propget] HRESULT NotAvailable([out, retval] boolean *value); + [propget] HRESULT PackageOffline([out, retval] boolean *value); + [propget] HRESULT DataOffline([out, retval] boolean *value); + [propget] HRESULT Disabled([out, retval] boolean *value); + [propget] HRESULT NeedsRemediation([out, retval] boolean *value); + [propget] HRESULT LicenseIssue([out, retval] boolean *value); + [propget] HRESULT Modified([out, retval] boolean *value); + [propget] HRESULT Tampered([out, retval] boolean *value); + [propget] HRESULT DependencyIssue([out, retval] boolean *value); + [propget] HRESULT Servicing([out, retval] boolean *value); + [propget] HRESULT DeploymentInProgress([out, retval] boolean *value); + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.ApplicationModel.PackageId), @@ -146,6 +169,16 @@ namespace Windows.ApplicationModel { [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.ApplicationModel.IPackage8; }
+ [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + marshaling_behavior(agile) + ] + runtimeclass PackageStatus + { + [default] interface Windows.ApplicationModel.IPackageStatus; + [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.ApplicationModel.IPackageStatus2; + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile)
From: Rémi Bernon rbernon@codeweavers.com
--- tools/widl/parser.l | 1 + tools/widl/parser.y | 2 +- tools/widl/widl.c | 7 ++++--- tools/widl/widl.h | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/tools/widl/parser.l b/tools/widl/parser.l index 951998de381..61266efb9e3 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -520,6 +520,7 @@ void push_import( const char *import_name, struct location *where )
LIST_FOR_EACH_ENTRY( import, &imports, struct import, entry ) if (!strcmp( import->name, import_name )) return; /* already imported */ + if (!strcmp( idl_name, import_name )) return; /* already imported */
import = xmalloc( sizeof(struct import) ); import->name = xstrdup( import_name ); diff --git a/tools/widl/parser.y b/tools/widl/parser.y index f66dc62492f..bfd41aa9807 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -2270,7 +2270,7 @@ char *gen_name(void)
if (! file_id) { - char *dst = replace_extension( get_basename(input_idl_name), ".idl", "" ); + char *dst = replace_extension( idl_name, ".idl", "" ); file_id = dst;
for (; *dst; ++dst) diff --git a/tools/widl/widl.c b/tools/widl/widl.c index 5bbaeb970fb..c9014d6fddc 100644 --- a/tools/widl/widl.c +++ b/tools/widl/widl.c @@ -114,7 +114,7 @@ static int stdinc = 1; static enum stub_mode stub_mode = MODE_Os;
char *input_name; -char *input_idl_name; +char *idl_name; char *acf_name; char *header_name; char *local_stubs_name; @@ -435,7 +435,7 @@ void write_id_data(const statement_list_t *stmts) }
fprintf(idfile, "/*** Autogenerated by WIDL %s ", PACKAGE_VERSION); - fprintf(idfile, "from %s - Do not edit ***/\n\n", input_idl_name); + fprintf(idfile, "from %s - Do not edit ***/\n\n", idl_name); fprintf(idfile, "#include <rpc.h>\n"); fprintf(idfile, "#include <rpcndr.h>\n\n");
@@ -782,7 +782,8 @@ int main(int argc,char *argv[]) return 1; } else - input_idl_name = input_name = xstrdup(files.str[0]); + input_name = xstrdup( files.str[0] ); + idl_name = get_basename( input_name ); } else { fprintf(stderr, "%s", usage); diff --git a/tools/widl/widl.h b/tools/widl/widl.h index 518ae613f83..7595cfe7311 100644 --- a/tools/widl/widl.h +++ b/tools/widl/widl.h @@ -52,7 +52,7 @@ extern int winrt_mode; extern int use_abi_namespace;
extern char *input_name; -extern char *input_idl_name; +extern char *idl_name; extern char *acf_name; extern char *header_name; extern char *header_token;
From: Rémi Bernon rbernon@codeweavers.com
--- include/Makefile.in | 1 + include/windows.applicationmodel.core.idl | 60 +++++++++++++++++++++++ include/windows.applicationmodel.idl | 5 ++ 3 files changed, 66 insertions(+) create mode 100644 include/windows.applicationmodel.core.idl
diff --git a/include/Makefile.in b/include/Makefile.in index 025fdca7326..adbc4165b48 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -811,6 +811,7 @@ SOURCES = \ windef.h \ windns.h \ windot11.h \ + windows.applicationmodel.core.idl \ windows.applicationmodel.idl \ windows.devices.bluetooth.idl \ windows.devices.enumeration.idl \ diff --git a/include/windows.applicationmodel.core.idl b/include/windows.applicationmodel.core.idl new file mode 100644 index 00000000000..cc830609f7f --- /dev/null +++ b/include/windows.applicationmodel.core.idl @@ -0,0 +1,60 @@ +/* + * Copyright 2023 Rémi Bernon for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifdef __WIDL__ +#pragma winrt ns_prefix +#endif + +import "windows.foundation.idl"; +import "windows.storage.idl"; +import "windows.system.idl"; +import "windows.applicationmodel.idl"; + +namespace Windows.ApplicationModel { + runtimeclass AppDisplayInfo; +} + +namespace Windows.ApplicationModel.Core { + interface IAppListEntry; + + runtimeclass AppListEntry; + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.ApplicationModel.Core.AppListEntry), + uuid(ef00f07f-2108-490a-877a-8a9f17c25fad) + ] + interface IAppListEntry : IInspectable + { + [propget] HRESULT DisplayInfo([out, retval] Windows.ApplicationModel.AppDisplayInfo **value); + HRESULT LaunchAsync([out, retval] Windows.Foundation.IAsyncOperation<boolean> **operation); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + marshaling_behavior(agile), + threading(both) + ] + runtimeclass AppListEntry + { + [default] interface Windows.ApplicationModel.Core.IAppListEntry; + [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.ApplicationModel.Core.IAppListEntry2; + [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.ApplicationModel.Core.IAppListEntry3; + [contract(Windows.Foundation.UniversalApiContract, 11.0)] interface Windows.ApplicationModel.Core.IAppListEntry4; + } +} diff --git a/include/windows.applicationmodel.idl b/include/windows.applicationmodel.idl index 70cf9178de8..13984d27f8a 100644 --- a/include/windows.applicationmodel.idl +++ b/include/windows.applicationmodel.idl @@ -23,6 +23,11 @@ import "windows.foundation.idl"; import "windows.storage.idl"; import "windows.system.idl"; +import "windows.applicationmodel.core.idl"; + +namespace Windows.ApplicationModel.Core { + runtimeclass AppListEntry; +}
namespace Windows.ApplicationModel { typedef struct PackageVersion PackageVersion;
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.applicationmodel.idl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/include/windows.applicationmodel.idl b/include/windows.applicationmodel.idl index 13984d27f8a..47557f7efb9 100644 --- a/include/windows.applicationmodel.idl +++ b/include/windows.applicationmodel.idl @@ -34,6 +34,7 @@ namespace Windows.ApplicationModel {
interface IAppDisplayInfo; interface IPackage; + interface IPackage3; interface IPackageStatus; interface IPackageId; interface IPackageIdWithMetadata; @@ -48,6 +49,9 @@ namespace Windows.ApplicationModel { interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package *>; interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Package *>; interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Package *>; + interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Core.AppListEntry *>; + interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Core.AppListEntry *> *>; + interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Core.AppListEntry *> *>; }
[ @@ -86,6 +90,18 @@ namespace Windows.ApplicationModel { [propget] HRESULT Dependencies([out, retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Package *> **value); }
+ [ + exclusiveto(Windows.ApplicationModel.Package), + uuid(5f738b61-f86a-4917-93d1-f1ee9d3b35d9), + version(0x0a000000) + ] + interface IPackage3 : IInspectable + { + [propget] HRESULT Status([out, retval] Windows.ApplicationModel.PackageStatus **value); + [propget] HRESULT InstalledDate([out, retval] Windows.Foundation.DateTime *value); + HRESULT GetAppListEntriesAsync([out, retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Core.AppListEntry *> *> **operation); + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.ApplicationModel.PackageStatus),
Rebased and updated the widl change (required for windows.applicationmodel.core which includes windows.applicationmodel, which in turn includes windows.applicationmodel.core again).