[GH-ISSUE #402] Winget package #1303

Closed
opened 2026-02-28 12:03:38 +03:00 by kerem · 21 comments
Owner

Originally created by @majkinetor on GitHub (May 7, 2023).
Original GitHub issue: https://github.com/1Remote/1Remote/issues/402

Originally assigned to: @majkinetor on GitHub.

I should do a winget package (and get oportunity to learn more about it). One of the reasons is that chocolatey package for 1RM is submited a month ago and still not approved (and Chocolatey is becoming more and more hostale toward FOSS users).

Originally created by @majkinetor on GitHub (May 7, 2023). Original GitHub issue: https://github.com/1Remote/1Remote/issues/402 Originally assigned to: @majkinetor on GitHub. I should do a winget package (and get oportunity to learn more about it). One of the reasons is that chocolatey package for 1RM is submited a month ago and still not approved (and Chocolatey is becoming more and more hostale toward FOSS users).
Author
Owner

@majkinetor commented on GitHub (May 13, 2023):

Unfortunatelly, winget doesn't support apps that do not have installers. So installer needs to be done to support it.

The supported installers are listed here.

ZIP installerrs are added recently, but they are mostly single files. I found one that is larger archive - yazu. This means winget will simply unpack archive to default or desired location.

Choco package has a PowerShell script that can do anything, which I used to restart running process and create desktop icon. This will not be possible here. Neverthless, I am happy its now possible, so I will give it a try and see how it goes. If nothing else, we will make installer.

/cc @VShawn .

<!-- gh-comment-id:1546732950 --> @majkinetor commented on GitHub (May 13, 2023): Unfortunatelly, winget doesn't support apps that do not have installers. So installer needs to be done to support it. The supported installers are listed [here](https://learn.microsoft.com/en-us/windows/package-manager/winget/#supported-installer-formats). ZIP installerrs are added recently, but they are mostly single files. I found one that is larger archive - [yazu](https://github.com/microsoft/winget-pkgs/blob/c7caa8eed1857df410bf88e0159a73c960382842/manifests/y/YuzuEmu/Yuzu/Mainline/1287/YuzuEmu.Yuzu.Mainline.installer.yaml). This means winget will simply unpack archive to default or desired location. Choco package has a PowerShell script that can do anything, which I used to restart running process and create desktop icon. This will not be possible here. Neverthless, I am happy its now possible, so I will give it a try and see how it goes. If nothing else, we will make installer. /cc @VShawn .
Author
Owner

@VShawn commented on GitHub (May 14, 2023):

appx and msix can be built by the installer project in the solution, but i didn't figure out how to build them by a script.

<!-- gh-comment-id:1546804012 --> @VShawn commented on GitHub (May 14, 2023): appx and msix can be built by the installer project in the solution, but i didn't figure out how to build them by a script.
Author
Owner

@majkinetor commented on GitHub (May 14, 2023):

Here is the zip spec

<!-- gh-comment-id:1546836947 --> @majkinetor commented on GitHub (May 14, 2023): Here is the [zip spec](https://github.com/microsoft/winget-cli/blob/master/doc/specs/%23140%20-%20ZIP%20Support.md)
Author
Owner

@majkinetor commented on GitHub (May 19, 2023):

Progress so far.

winget doesn't support dependencies yet so one most install manually dotnet desktop runtime:

winget install Microsoft.DotNet.DesktopRuntime.6  --accept-source-agreements --accept-package-agreements

After trying my manifest it extracted it in Temp folder but failed to open it. On double click it offers MS Store, but if run from command line it executes:

Animation

Anyway, this installer manifest passes:

PackageIdentifier: 1Remote.1Remote
PackageVersion: 1.0.0.3
Dependencies:
  PackageDependencies:
  - PackageIdentifier: Microsoft.DotNet.DesktopRuntime.6
Installers:
- InstallerUrl: https://github.com/1Remote/1Remote/releases/download/Nightly/1Remote-1.0.0.0-beta.03-net6-x64-nightly-20230513-3ba04d.zip
  Architecture: x64
  InstallerType: zip
  NestedInstallerType: portable
  NestedInstallerFiles:
  - RelativeFilePath: 1Remote.exe
  InstallerSha256: EF3508A3FFEF1627655ACE920AC5DDD2A80ABEFE2A2B6547430C2145EDCFB23D
ManifestType: installer
ManifestVersion: 1.4.0

Once published, one installs this using the following command:

winget install Microsoft.DotNet.DesktopRuntime.6  --accept-source-agreements --accept-package-agreements
winget install 1Remote --location c:\tools\1Remote

Without location, default location is %LOCALAPPDATA%\Microsoft\WinGet\Packages\1Remote.1Remote__DefaultSource which is amazingly bad. Symbolic link is created tho at %LOCALAPPDATA%\Microsoft\WinGet\Links\1Remote.exe which if run fails because SQLite dll can't be found :)

So, to recap:

  1. Location must be used
  2. Desktop runtime will be probably automatically installed somewhere in the future when dependencies do work (currently mockup is available as winget experimental feature)
  3. If we change portable to exe winget calls 1Remote.exe after extraction, and it could pass silent install parameters that we could use to create desktop icon and/or run the app in the background.
  4. MS Store search wont happen outside the Sandbox, I tested on my local machine

Animation

Here is the zip with the full manifest for now: winget.zip. PR to the https://github.com/microsoft/winget-pkgs is required for each version. I should create new version of AU to work with winget protocol to automate this.

<!-- gh-comment-id:1555221747 --> @majkinetor commented on GitHub (May 19, 2023): Progress so far. winget doesn't support dependencies yet so one most install manually dotnet desktop runtime: ``` winget install Microsoft.DotNet.DesktopRuntime.6 --accept-source-agreements --accept-package-agreements ``` After trying my manifest it extracted it in Temp folder but failed to open it. On double click it offers MS Store, but if run from command line it executes: ![Animation](https://github.com/1Remote/1Remote/assets/85767/4a372c4f-b2b4-4c37-b437-33de635c48e1) Anyway, this installer manifest passes: ``` PackageIdentifier: 1Remote.1Remote PackageVersion: 1.0.0.3 Dependencies: PackageDependencies: - PackageIdentifier: Microsoft.DotNet.DesktopRuntime.6 Installers: - InstallerUrl: https://github.com/1Remote/1Remote/releases/download/Nightly/1Remote-1.0.0.0-beta.03-net6-x64-nightly-20230513-3ba04d.zip Architecture: x64 InstallerType: zip NestedInstallerType: portable NestedInstallerFiles: - RelativeFilePath: 1Remote.exe InstallerSha256: EF3508A3FFEF1627655ACE920AC5DDD2A80ABEFE2A2B6547430C2145EDCFB23D ManifestType: installer ManifestVersion: 1.4.0 ``` Once published, one installs this using the following command: ``` winget install Microsoft.DotNet.DesktopRuntime.6 --accept-source-agreements --accept-package-agreements winget install 1Remote --location c:\tools\1Remote ``` Without location, default location is `%LOCALAPPDATA%\Microsoft\WinGet\Packages\1Remote.1Remote__DefaultSource` which is amazingly bad. Symbolic link is created tho at `%LOCALAPPDATA%\Microsoft\WinGet\Links\1Remote.exe` which if run fails because SQLite dll can't be found :) So, to recap: 1. Location must be used 2. Desktop runtime will be probably automatically installed somewhere in the [future](https://github.com/microsoft/winget-cli/blob/master/doc/specs/%23163%20-%20Dependencies.md) when dependencies do work (currently mockup is available as winget [experimental feature](https://github.com/microsoft/winget-cli/blob/master/doc/Settings.md#dependencies)) 3. If we change `portable` to `exe` winget calls 1Remote.exe after extraction, and it could pass silent install parameters that we could use to create desktop icon and/or run the app in the background. 4. MS Store search wont happen outside the Sandbox, I tested on my local machine ![Animation](https://github.com/1Remote/1Remote/assets/85767/4ac82e65-45bd-48b7-87a9-7462eb82492a) Here is the zip with the full manifest for now: [winget.zip](https://github.com/1Remote/1Remote/files/11520503/winget.zip). PR to the https://github.com/microsoft/winget-pkgs is required for each version. I should create new version of [AU](https://github.com/majkinetor/au) to work with winget protocol to automate this.
Author
Owner

@majkinetor commented on GitHub (May 25, 2023):

FYI 1remote chocolatey package is finally approved, I automated nightly release there.

Regarding winget release, I am going to do this:

  1. Create winget repo under 1remote organization.
  2. Change CI so that it automatically pushes new version there
  3. Document how to add our Github repo as a source

Then, I am thinking, we should change the "installer" - provide silent install options without installer itself that will add desktop icon and maybe some other stuff from first run screen and use that within winget package.

When we are happy with this, I will finally push to MS winget packages, but I intend to keep our repo updated indefinitelly.

@VShawn, if you have any thoughts about this, lay it out.

<!-- gh-comment-id:1562659391 --> @majkinetor commented on GitHub (May 25, 2023): FYI [1remote](https://community.chocolatey.org/packages/1remote) chocolatey package is finally approved, I automated nightly release there. Regarding winget release, I am going to do this: 1. Create winget repo under 1remote organization. 2. Change CI so that it automatically pushes new version there 3. Document how to add our Github repo as a source Then, I am thinking, we should change the "installer" - provide silent install options without installer itself that will add desktop icon and maybe some other stuff from first run screen and use that within winget package. When we are happy with this, I will finally push to MS winget packages, but I intend to keep our repo updated indefinitelly. @VShawn, if you have any thoughts about this, lay it out.
Author
Owner

@VShawn commented on GitHub (May 26, 2023):

chocolatey package is finally approved

good to hear but why it took so long?

silent install options without installer itself

what you mean of this? I may have misunderstood your meaning, it would be good to provide a reference program that implements this type of installation method.

And do we need to write our own installer to implement this installation?

<!-- gh-comment-id:1563700744 --> @VShawn commented on GitHub (May 26, 2023): > chocolatey package is finally approved good to hear but why it took so long? > silent install options without installer itself what you mean of this? I may have misunderstood your meaning, it would be good to provide a reference program that implements this type of installation method. And do we need to write our own installer to implement this installation?
Author
Owner

@majkinetor commented on GitHub (May 27, 2023):

good to hear but why it took so long?

First version of the package takes much longer. Afterwards packages are approved quicker. Latest version is already approved.

I mean you don't have to be installer to have installer options. You can just implement them inside main app. For example, creating a desktop or start menu icon could be done any time. There are number of tools that do this.

To be friendlier on users, we could add some of those, callable via arguments, and use that in winget.

<!-- gh-comment-id:1565266860 --> @majkinetor commented on GitHub (May 27, 2023): > good to hear but why it took so long? First version of the package takes much longer. Afterwards packages are approved quicker. Latest version is already approved. I mean you don't have to be installer to have installer options. You can just implement them inside main app. For example, creating a desktop or start menu icon could be done any time. There are number of tools that do this. To be friendlier on users, we could add some of those, callable via arguments, and use that in winget.
Author
Owner

@Xhanti commented on GitHub (Oct 18, 2023):

Hi @majkinetor does the winget installer still work or still in testing?
I wanted to install 1Remote and try it out, got this
image
I was hopping the winget install method would get me around this

<!-- gh-comment-id:1768066913 --> @Xhanti commented on GitHub (Oct 18, 2023): Hi @majkinetor does the winget installer still work or still in testing? I wanted to install 1Remote and try it out, got this <img width="442" alt="image" src="https://github.com/1Remote/1Remote/assets/2096304/c52123bf-ab25-48d8-89f7-7efe0944e0cd"> I was hopping the winget install method would get me around this
Author
Owner

@majkinetor commented on GitHub (Oct 18, 2023):

Nah, it turned out that I have a problem with winget even now due to its non-existing scripting features.

For the record, we added installer parameters BUT, winget will use temporary copy of 1remote and it will install itself on temporary location.... What needs to be done is to add new installer parameter to 1Remote - path - that will instruct it to copy and setup itself at that path, not at its current path.

As an example, everything has this:

install

Copies Everything.exe and uninstall.exe to the new location. Creates an uninstall entry in Programs and Features if uninstall.exe is present. Executes the copied Everything.exe with the install options specified in -install-options.

<!-- gh-comment-id:1768084881 --> @majkinetor commented on GitHub (Oct 18, 2023): Nah, it turned out that I have a problem with winget even now due to its non-existing scripting features. For the record, we added installer parameters BUT, winget will use temporary copy of 1remote and it will install itself on temporary location.... What needs to be done is to add new installer parameter to 1Remote - `path` - that will instruct it to copy and setup itself at that path, not at its current path. As an example, everything has this: > install <location> > > Copies Everything.exe and uninstall.exe to the new location. Creates an uninstall entry in Programs and Features if uninstall.exe is present. Executes the copied Everything.exe with the install options specified in [-install-options](https://www.voidtools.com/support/everything/command_line_options#-install-options).
Author
Owner

@majkinetor commented on GitHub (Oct 18, 2023):

I wanted to install 1Remote and try it out, got this

Screenshot says PRemote, not 1Remote. Have you try to download it from the nightly release (use last entry, currently 1Remote-1.0.0.0-beta.06-net6-x64-nightly-20231007-3f0d50.zip) and check it out ?

<!-- gh-comment-id:1768090234 --> @majkinetor commented on GitHub (Oct 18, 2023): > I wanted to install 1Remote and try it out, got this Screenshot says PRemote, not 1Remote. Have you try to download it from the [nightly release](https://github.com/1Remote/1Remote/releases/tag/Nightly) (use last entry, currently 1Remote-1.0.0.0-beta.06-net6-x64-nightly-20231007-3f0d50.zip) and check it out ?
Author
Owner

@Xhanti commented on GitHub (Oct 18, 2023):

Hi @majkinetor ,
thank you for the quick response.

I got it from here:
image

image

Is that the right place to get the installer?

<!-- gh-comment-id:1768109204 --> @Xhanti commented on GitHub (Oct 18, 2023): Hi @majkinetor , thank you for the quick response. I got it from here: <img width="1025" alt="image" src="https://github.com/1Remote/1Remote/assets/2096304/1bbfe17f-cc91-4b53-904e-971db0aba596"> <img width="359" alt="image" src="https://github.com/1Remote/1Remote/assets/2096304/60f56a1d-de26-45d3-aea5-5a3ccd5a411b"> Is that the right place to get the installer?
Author
Owner

@majkinetor commented on GitHub (Oct 18, 2023):

No, I left you link, you take nightly.

This is the latest 1remote at this moment:

https://github.com/1Remote/1Remote/releases/download/Nightly/1Remote-1.0.0.0-beta.06-net6-x64-nightly-20231007-3f0d50.zip

<!-- gh-comment-id:1768201001 --> @majkinetor commented on GitHub (Oct 18, 2023): No, I left you link, you take nightly. This is the latest 1remote at this moment: https://github.com/1Remote/1Remote/releases/download/Nightly/1Remote-1.0.0.0-beta.06-net6-x64-nightly-20231007-3f0d50.zip
Author
Owner

@Xhanti commented on GitHub (Oct 19, 2023):

Hi @majkinetor ,

Is there anyway to get a signed version of this app? I am not allowed to install unsigned binaries on this machine

<!-- gh-comment-id:1770533429 --> @Xhanti commented on GitHub (Oct 19, 2023): Hi @majkinetor , Is there anyway to get a signed version of this app? I am not allowed to install unsigned binaries on this machine
Author
Owner

@majkinetor commented on GitHub (Oct 19, 2023):

Don't know what @VShawn thinks, but as far as I know that requires money and a lot of dedication. Maybe I am wrong but I think its a big hassle.

<!-- gh-comment-id:1770711562 --> @majkinetor commented on GitHub (Oct 19, 2023): Don't know what @VShawn thinks, but as far as I know that requires money and a lot of dedication. Maybe I am wrong but I think its a big hassle.
Author
Owner

@VShawn commented on GitHub (Oct 20, 2023):

Yes, I don't intend to provide a signed package, but since it's an open-source software, you can download the source code, compile it, and sign it yourself:)

<!-- gh-comment-id:1772740519 --> @VShawn commented on GitHub (Oct 20, 2023): Yes, I don't intend to provide a signed package, but since it's an open-source software, you can download the source code, compile it, and sign it yourself:)
Author
Owner

@Xhanti commented on GitHub (Oct 20, 2023):

That's not a bad suggestion at all. Thank you 🙏🏾

<!-- gh-comment-id:1772903458 --> @Xhanti commented on GitHub (Oct 20, 2023): That's not a bad suggestion at all. Thank you 🙏🏾
Author
Owner

@majkinetor commented on GitHub (Nov 26, 2023):

Just as an information, regarding signing, there is one free that some popular open source software use:

https://about.signpath.io/product/open-source

<!-- gh-comment-id:1826455100 --> @majkinetor commented on GitHub (Nov 26, 2023): Just as an information, regarding signing, there is one free that some popular open source software use: https://about.signpath.io/product/open-source
Author
Owner

@Xhanti commented on GitHub (Nov 26, 2023):

That sounds like a great option. If you guys are open to me working on that (getting the build system ready, if it's not) I can definitely chip in

<!-- gh-comment-id:1826720304 --> @Xhanti commented on GitHub (Nov 26, 2023): That sounds like a great option. If you guys are open to me working on that (getting the build system ready, if it's not) I can definitely chip in
Author
Owner

@VShawn commented on GitHub (Nov 26, 2023):

If you guys are open to me working on that (getting the build system ready, if it's not) I can definitely chip

Of course, everyone is welcome to contribute to 1Remote.

Just as an information, regarding signing, there is one free that some popular open source software use

I registered and quickly browsed through it, but I haven't fully grasped how to make it work. And one thing to note is how to retrieve the secrets stored on GitHub in the signpath.io CI system?

<!-- gh-comment-id:1826781557 --> @VShawn commented on GitHub (Nov 26, 2023): > If you guys are open to me working on that (getting the build system ready, if it's not) I can definitely chip Of course, everyone is welcome to contribute to 1Remote. > Just as an information, regarding signing, there is one free that some popular open source software use I registered and quickly browsed through it, but I haven't fully grasped how to make it work. And one thing to note is how to retrieve the secrets stored on GitHub in the signpath.io CI system?
Author
Owner

@github-actions[bot] commented on GitHub (Nov 19, 2025):

This issue is stale because it has been open for 30 days with no activity.

<!-- gh-comment-id:3550343402 --> @github-actions[bot] commented on GitHub (Nov 19, 2025): This issue is stale because it has been open for 30 days with no activity.
Author
Owner

@github-actions[bot] commented on GitHub (Dec 3, 2025):

This issue was closed because it has been inactive for 14 days since being marked as stale.

<!-- gh-comment-id:3604726057 --> @github-actions[bot] commented on GitHub (Dec 3, 2025): This issue was closed because it has been inactive for 14 days since being marked as stale.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/1Remote#1303
No description provided.