NanaZip icon indicating copy to clipboard operation
NanaZip copied to clipboard

EPIC: Build the entire UX with XAML Islands (with WinUI Visual Style)

Open be5invis opened this issue 4 years ago • 15 comments

As Reunion WASDK is moving close to v1.0, instead of rewriting the UX with XAML Island, using WinUI may be a better idea.

be5invis avatar Sep 30 '21 01:09 be5invis

Good idea.

fcharlie avatar Sep 30 '21 01:09 fcharlie

I have assessed the WinUI 2 and Windows App SDK (Project Reunion) several months ago. Finally I still choose XAML Islands to build the entire UX. Here are some details.

  • I will use part of Windows App SDK (MSBuild PriGen targets) and WinUI 2 (Windows 11 control styles and Mica compositor implementation) implementations to achieve the Windows 11 UX style and XAML Islands with single executable. So users still have the modern Windows UX experience.
  • Windows App SDK (50MB Runtime) and WinUI 2 (15MB Package) are still too big for the unpackaged version I have planned in the future. The reason for most people who choose the unpackage version is that they don't want to install any packages or runtimes. So I need to include them inside it because these infrastructures are not the builtin components for Windows 10 (I can't find the CBS version in Windows 10 WinSxS folder.). I hope a smaller size footprint.
  • The implementation of my UWP XAML adapt layer is called Mile.Xaml. I am developing it internally and will publish them to GitHub publically before I start to develop the NanaZip 2.x series. Mile.Xaml is a lightweight infrastructure and it may provide the static linked library and NanaZip will choose that form to use.

Kenji Mouri

MouriNaruto avatar Sep 30 '21 04:09 MouriNaruto

The thing is WinUI 2 will eventually discontinue and everything moves to WinUI 3. Do you think upgrading twice is better than upgrading once?

be5invis avatar Sep 30 '21 06:09 be5invis

So I need to include them inside it because these infrastructures are not the builtin components for Windows 10

They are not built-in for any OS versions AFAIK. Such a decoupling from OS is a design goal of WASDK.

be5invis avatar Sep 30 '21 06:09 be5invis

@be5invis

The thing is WinUI 2 will eventually discontinue and everything moves to WinUI 3.

Upgrade to the XAML control styles and new compositor from WinUI 3 if they do some changes because Microsoft will make WinUI 3 open source. So this project still use UWP XAML.

They are not built-in for any OS versions AFAIK. Such a decoupling from OS is a design goal of WASDK.

Of course they will built-in unless they don't want to use them to modernize the Windows UX components. (Microsoft has no reason to let developers use it unless they also use it.) I guess the CBS version of WinUI 2/3 will be the fallback when the Windows Store version is not available. (Similar way like the notepad.)

Also, I want to say something about "decoupling from OS". Many years ago, the guy who maintaining the MSVC runtime says the similar words, but the features set in builtin msvcrt.dll is still synchronized to MSVC 2008. They finally make the builtin Universal CRT to replace that for using in the new OS components. Today, ucrtbase.dll and vcruntime140.dll both have the same part and Windows App SDK uses Universal CRT directly and NanaZip follow the way.

References for WinUI 2 CBS version

  • https://github.com/microsoft/microsoft-ui-xaml/blob/c8c76f032c9b44269eb00d5a6f2a54e3e961aca0/dev/dll/XamlControlsResources.cpp#L119
  • https://github.com/microsoft/microsoft-ui-xaml/search?q=cbs&type=issues
  • image

Finally, this project will upgrade to WinUI 3 and use full feature sets by replacing the namespace if the WinUI 3 are started to be used by Windows OS components. (I mean something in SystemApps folder uses it.) And I will change the minimum system requirements to the first Windows version which is really do this.

P.S. I have started to use C++/WinRT since 2019, but I feel that I finally have a stable version to use since early 2020. Windows App SDK needs time to polish it and make it as usable and stable as WinUI 2.

Kenji Mouri

MouriNaruto avatar Sep 30 '21 06:09 MouriNaruto

So I need to include them inside it because these infrastructures are not the builtin components for Windows 10

They are not built-in for any OS versions AFAIK. Such a decoupling from OS is a design goal of WASDK.

@be5invis I saw the 64 bit runtime dlls of WinUI 3 is around 40MB, if it's not built in the OS, then every software that based on WinUI 3 has to ship these big dlls? If I develop a small tool which is only 1MB, I still have to ship the 40MB WinUI3 runtime library? That sounds quite ridiculous.

wangwenx190 avatar Sep 30 '21 07:09 wangwenx190

@wangwenx190 From [1] it looks like you can specify dependencies at MSIX packages so shipping a large DLL is not necessary.

be5invis avatar Sep 30 '21 07:09 be5invis

@be5invis Yes, but then the user will need to have an active Internet connection and the ability to download software from the Microsoft Store in order to install your app. This is one of the main reasons why I don’t use WinUI 3.

wjk avatar Sep 30 '21 16:09 wjk

Hi!

I only knew about this project starting today (through the MDL forum). Congratulations on the progress already done and the plans you made for the future of this app.

Regarding this topic, I made a concept one month ago of what could 7-Zip look like if it used WinUI 2.6. This concept may help you with the redesign you want to do.

Thank you so much for this project.

Rúben Garrido

image

RGarrido03 avatar Oct 01 '21 11:10 RGarrido03

@RGarrido03

I have watched your concept in https://sourceforge.net/p/sevenzip/feature-requests/1536 about a month ago. It inspires me and let me feel make a 7-Zip derivative with modern user experience is meaningful. Therefore, I create NanaZip formally instead of make a patch for 7-Zip mainline because I think most of changes I want won't be accepted to the 7-Zip mainline.

Thank you so much for your concept.

Kenji Mouri

MouriNaruto avatar Oct 01 '21 11:10 MouriNaruto

I think it's time for close the issue because this issue have no further responses.

Kenji Mouri

MouriNaruto avatar Oct 02 '21 07:10 MouriNaruto

  • This comment is converted from the discussion (@hyperactiverobot , @MouriNaruto discussed in #50).
  • For more information, please read #274. Thank you.

Will NanaZip design be upgraded to Windows 11?

Originally posted by @hyperactiverobot 2021-11-22T02:16:28Z Simply that question, if it will have a modern design or there will be no changes.

Originally posted by @MouriNaruto 2021-11-22T02:20:18Z Starting with NanaZip 2.x Series, NanaZip will be modernized the UI with XAML Islands with the Windows 11 control style, Mica material, dark and light mode support, which is mentioned in https://github.com/M2Team/NanaZip#development-roadmap.

Kenji Mouri

Originally posted by @hyperactiverobot 2021-11-22T02:24:58Z Sorry, I hadn't checked the roadmap. Great news, thanks!

AndromedaMelody avatar Feb 05 '23 03:02 AndromedaMelody

Finally, this project will upgrade to WinUI 3 and use full feature sets by replacing the namespace if the WinUI 3 are started to be used by Windows OS components. (I mean something in SystemApps folder uses it.) And I will change the minimum system requirements to the first Windows version which is really do this.

A somewhat exciting development. Picture

EFLKumo avatar Mar 28 '23 05:03 EFLKumo

Finally, this project will upgrade to WinUI 3 and use full feature sets by replacing the namespace if the WinUI 3 are started to be used by Windows OS components. (I mean something in SystemApps folder uses it.) And I will change the minimum system requirements to the first Windows version which is really do this.

A somewhat exciting development. Picture

Can I get in touch with you?

Shomnipotence avatar Mar 29 '23 08:03 Shomnipotence

I am designing various dialogs in NanaZip. These are early XAML mockups, subject to change. We are still going to use System XAML Islands via Mile.Xaml for the final UI.







driver1998 avatar Jul 08 '23 17:07 driver1998