How to add my AutoHotKeys App in to Microsoft Store ?
Posted: 08 Apr 2020, 01:31
Is there way to add my AutoHotKeys App in to Microsoft Store ?
Let's help each other out
https://www.autohotkey.com/boards/
https://www.autohotkey.com/boards/viewtopic.php?f=81&t=74378
It might mean that if you wish to publish in Microsoft Store script bundled with interpreter, then you act against above clause. No matter if you wish to publish AutoHotkey script or Python or whatever else.
Your product must not attempt to fundamentally change or extend its described functionality or introduce features or functionality that are in violation of Store Policies through any form of dynamic inclusion of code. Your product should not, for example, download a remote script and subsequently execute that script in a manner that is not consistent with the described functionality
I choose to interpret this as "you can't fundamentally change what your program does using dynamic inclusion of code", meaning if your app is for example a video player app then you can't make it download and interpret a script to start listening to the microphone or keylogging. I don't take it as a blanket ban on scripting languages, and also if it were enforced as such then dynamic updates to apps wouldn't be possible (yet at they moment they are, for example VSCode from Store auto-updates). Just make sure that if you do dynamic inclusion of code that the added functionality is in concordance with the Store description of the app, and that it doesn't violate Store Policies.
Your product must not attempt to fundamentally change or extend its described functionality or introduce features or functionality that are in violation of Store Policies through any form of dynamic inclusion of code. Your product should not, for example, download a remote script and subsequently execute that script in a manner that is not consistent with the described functionality
I'm afraid so too. I mean theoretically you could communicate with a Store rep and talk it through (perhaps share the source code, give compilation instructions etc to prove your program isn't malicious), maybe they'd make an exception, but I wouldn't count on it.I'm afraid the latter might not be possible .
I used MSIX Hero to package into MSIX, and MSIX Packaging Tool to sign the package and modify smaller things if needed (eg virtual registry).By the way, what tool have you used to prepare MSIX package?
I'll keep you informed in this thread if something valuable will be answered in the Microsoft one.Is it possible to publish script originated application in Microsoft Store?
By the team it is understood Microsoft Store team.According to the response from the team you got, it seems that script originated application can't be published to the Store, you might try to distribute your app via sideloading.
This means that you might need to follow the same procedure to get it accepted, but I haven't tried it out.I was having problems with the downloads of Ahk2Exe being flagged as suspicious, so in March 2022 I submitted a false positive report to Microsoft. Ever since then I have not encountered any further difficulties! Ahk2Exe is just compiled normally with no compression using AutoHotkeyU32.exe as a base file.
The corresponding manifest file is here and below:Package acceptance validation error: The following image(s) specified in the appxManifest.xml of Hotstrings.msix were not found: Assets\HotstringsLogo_100x100.png, HotstringsLogo_100x100.png, HotstringsLogo_100x100.png
Package acceptance validation error: The PublisherDisplayName element in the app manifest of Hotstrings.msix is , which doesn't match your publisher display name: Damian Damaszke Dam IT.
Package acceptance validation error: The package Hotstrings.msix must declare support for at least one language.
Package acceptance validation error: The package Hotstrings.msix specifies an unsupported default language:
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
>
<Identity
Name="Hotstrings"
ProcessorArchitecture = "x64"
Publisher="CN=DamianDamaszkeDamIT, O=DamianDamaszkeDamIT, L=Gdańsk, S=pomorskie, C=Poland"
Version="3.6.23.0"
/>
<Properties>
<DisplayName>Hotstrings</DisplayName>
<PublisherDisplayName>Damian Damaszke Dam IT</PublisherDisplayName>
<Description>Text replacement software application for Microsoft Windows. Short text entered by keyboard is automatically replaced into previously defined text(s) called hotstring(s).</Description>
<Logo>Assets\HotstringsLogo_100x100.png</Logo>
</Properties>
<Resources>
<Resource Language="en-US" />
</Resources>
<Applications>
<Application
Id="Hotstrings"
EntryPoint="windows.fullTrustApplication"
Executable="Hotstrings.exe"
>
<uap:VisualElements
DisplayName="Hotstrings"
Description="Text replacement software application for Microsoft Windows. Short text entered by keyboard is automatically replaced into previously defined text(s) called hotstring(s)."
BackgroundColor="#FFFFFF"
Square150x150Logo="HotstringsLogo_100x100.png"
Square44x44Logo="HotstringsLogo_100x100.png"
>
</uap:VisualElements>
</Application>
</Applications>
<Dependencies>
<!-- https://www.anoopcnair.com/windows-10-build-numbers-version-numbers/ -->
<TargetDeviceFamily
Name="Windows.Desktop"
MinVersion="10.0.19043.985"
MaxVersionTested="10.0.19045.3693"
/>
</Dependencies>
<!-- Add additional sections and settings as needed -->
</Package>
Code: Select all
C:\Users\<username>\AppData\Local\Hotstrings\
├── Languages\
│ └── English.txt
├── Libraries\
│ ├── AbbreviationsEnglish.csv
│ ├── (…)
│ └── WindowsShortcuts.csv
├── Log\
├── Config.ini
├── Hotstrings.exe
├── Hotstrings.ahk
├── HotstringsWebpage.url
└── LICENSE_MIT
If you ever would like to change the installation settings, go to the Settings → Apps & Features of your Windows installation. Then select `Windows SDK AddOn` and select or deselect any item.
Code: Select all
C:\Users\<username>\(…))\InputMSIX\
├── Assets
└── VFS\
└── Local AppData
The subfolder names are required to be named as above, including the space character in between Local and AppData.
Code: Select all
C:\Users\<username>\(…))\InputMSIX\
├── Assets\
└── VFS\
└── Local AppData\
└── Hotstrings\
├── Languages\
│ └── English.txt
├── Libraries\
│ ├── AbbreviationsEnglish.csv
│ ├── (…)
│ └── WindowsShortcuts.csv
├── Log\
├── Config.ini
├── Hotstrings.exe
├── Hotstrings.ahk
├── HotstringsWebpage.url
└── LICENSE_MIT
Code: Select all
+----------------------------------------------------------+---------------+--------+
| file name | size (pixels) | bits |
+----------------------------------------------------------+---------------+--------+
| Square150x150Logo.scale-100.png | 150 x 150 | 32 bit |
| Square150x150Logo.scale-125.png | 188 x 188 | 32 bit |
| Square150x150Logo.scale-150.png | 225 x 225 | 32 bit |
| Square150x150Logo.scale-200.png | 300 x 300 | 32 bit |
| Square150x150Logo.scale-400.png | 600 x 600 | 32 bit |
| | | |
| Square44x44Logo.scale-100.png | 44 x 44 | 32 bit |
| Square44x44Logo.scale-125.png | 55 x 55 | 32 bit |
| Square44x44Logo.scale-150.png | 66 x 66 | 32 bit |
| Square44x44Logo.scale-200.png | 88 x 88 | 32 bit |
| Square44x44Logo.scale-400.png | 176 x 176 | 32 bit |
| | | |
| SplashScreen.scale-100.png | 620 x 300 | 32 bit |
| SplashScreen.scale-125.png | 775 x 375 | 32 bit |
| SplashScreen.scale-150.png | 930 x 450 | 32 bit |
| SplashScreen.scale-200.png | 1240 x 600 | 32 bit |
| SplashScreen.scale-400.png | 2480 x 1200 | 32 bit |
| | | |
| SoreLogo.scale-100.png | 50 x 50 | 32 bit |
| StoreLogo.scale-125.png | 63 x 63 | 32 bit |
| StoreLogo.scale-150.png | 75 x 75 | 32 bit |
| StoreLogo.scale-200.png | 100 x 100 | 32 bit |
| StoreLogo.scale-400.png | 200 x 200 | 32 bit |
| | | |
| Wide310x150Logo.scale-100.png | 310 x 150 | 32 bit |
| Wide310x150Logo.scale-125.png | 388 x 188 | 32 bit |
| Wide310x150Logo.scale-150.png | 465 x 225 | 32 bit |
| Wide310x150Logo.scale-200.png | 620 x 300 | 32 bit |
| Wide310x150Logo.scale-400.png | 1240 x 600 | 32 bit |
| | | |
| Square310x310Logo.scale-100.png | 310 x 310 | 32 bit |
| Square310x310Logo.scale-125.png | 388 x 388 | 32 bit |
| Square310x310Logo.scale-150.png | 465 x 465 | 32 bit |
| Square310x310Logo.scale-200.png | 620 x 620 | 32 bit |
| Square310x310Logo.scale-400.png | 1240 x 1240 | 32 bit |
| | | |
| Square71x71Logo.scale-100.png | 71 x 71 | 32 bit |
| Square71x71Logo.scale-125.png | 89 x 89 | 32 bit |
| Square71x71Logo.scale-150.png | 107 x 107 | 32 bit |
| Square71x71Logo.scale-200.png | 142 x 142 | 32 bit |
| Square71x71Logo.scale-400.png | 284 x 284 | 32 bit |
| | | |
| Square44x44Logo.targetsize-16.png | 16 x 16 | 32 bit |
| Square44x44Logo.targetsize-16_altform-lightunplated.png | 16 x 16 | 32 bit |
| quare44x44Logo.targetsize-16_altform-unplated.png | 16 x 16 | 32 bit |
| | | |
| Square44x44Logo.targetsize-24.png | 24 x 24 | 32 bit |
| Square44x44Logo.targetsize-24_altform-lightunplated.png | 24 x 24 | 32 bit |
| quare44x44Logo.targetsize-24_altform-unplated.png | 24 x 24 | 32 bit |
| | | |
| Square44x44Logo.targetsize-32.png | 32 x 32 | 32 bit |
| Square44x44Logo.targetsize-32_altform-lightunplated.png | 32 x 32 | 32 bit |
| Square44x44Logo.targetsize-32_altform-unplated.png | 32 x 32 | 32 bit |
| | | |
| Square44x44Logo.targetsize-48.png | 48 x 48 | 32 bit |
| Square44x44Logo.targetsize-48_altform-lightunplated.png | 48 x 48 | 32 bit |
| Square44x44Logo.targetsize-48_altform-unplated.png | 48 x 48 | 32 bit |
| | | |
| Square44x44Logo.targetsize-256.png | 256 x 256 | 32 bit |
| Square44x44Logo.targetsize-256_altform-lightunplated.png | 256 x 256 | 32 bit |
| Square44x44Logo.targetsize-256_altform-unplated.png | 256 x 256 | 32 bit |
+----------------------------------------------------------+---------------+--------+
To do: experiment with the file sizes and determine the minimum set of files.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap uap10 rescap"
>
<Identity
Name=""
ProcessorArchitecture="x64"
Publisher=""
Version="3.6.23.0"
/>
<Properties>
<DisplayName>Hotstrings</DisplayName>
<PublisherDisplayName></PublisherDisplayName>
<Description>Text replacement software application for Microsoft Windows. Short text entered by keyboard is automatically replaced into previously defined text(s) called hotstring(s).</Description>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Resources>
<Resource Language="en-US" />
<Resource uap:Scale="100" />
<Resource uap:Scale="125" />
<Resource uap:Scale="150" />
<Resource uap:Scale="200" />
<Resource uap:Scale="400" />
</Resources>
<Applications>
<Application
EntryPoint="Windows.FullTrustApplication"
Executable="VFS\Local AppData\Hotstrings\Hotstrings.exe"
Id="Hotstrings"
>
<uap:VisualElements AppListEntry="default" BackgroundColor="transparent" Description="Advanced, configurable, text replacement tool written in AutoHotkey language." DisplayName="Hotstrings" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png">
<uap:InitialRotationPreference>
<uap:Rotation Preference="portrait" />
<uap:Rotation Preference="landscape" />
</uap:InitialRotationPreference>
<uap:DefaultTile Square310x310Logo="Assets\Square310x310Logo.png" Square71x71Logo="Assets\Square71x71Logo.png" Wide310x150Logo="Assets\Wide310x150Logo.png" />
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Dependencies>
<!-- https://www.anoopcnair.com/windows-10-build-numbers-version-numbers/ -->
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.19043.985" MaxVersionTested="10.0.19045.3693" />
</Dependencies>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
<!-- Add additional sections and settings as needed -->
</Package>
Section Identity:
- Name
- Publisher
Section Properties:
- text
must be literally copied from your Microsoft Partner Center account → Home → Apps and games → app. Name (e.g. Hotstrings) → Product Identity. They are empty above on purpose.
Section Resources and section DisplayName: I just copied it from the reference packages prepared by Descolada.
Section Dependencies. See the link for details: Windows 10 Version Numbers Build Numbers Major Minor Build Rev HTMD Blog
To do: experiment with the file sizes and determine the minimum set of files.
Code: Select all
resources.pri
resources.map.txt
resources.scale-125.pri
resources.scale-125.map.txt
resources.scale-150.pri
resources.scale-150.map.txt
resources.scale-200.pri
resources.scale-200.map.txt
resources.scale-400.pri
resources.scale-400.map.txt
priconfig.xml
Code: Select all
[ResourceMetadata]
"ResourceDimensions" "scale-100"
"ResourceDimensions" "language-en-us"
"ResourceDimensions" "scale-125"
"ResourceDimensions" "scale-150"
"ResourceDimensions" "scale-200"
"ResourceDimensions" "scale-400"
[Files]
"(…)\Hotstrings-MSIX\PRIResources\resources.pri" "resources.pri"
"(…)\Hotstrings-MSIX\PRIResources\resources.scale-125.pri" "resources.scale-125.pri"
"(…)\Hotstrings-MSIX\PRIResources\resources.scale-150.pri" "resources.scale-150.pri"
"(…)\Hotstrings-MSIX\PRIResources\resources.scale-200.pri" "resources.scale-200.pri"
"(…)\Hotstrings-MSIX\PRIResources\resources.scale-400.pri" "resources.scale-400.pri"
"(…)\Hotstrings-MSIX\PRIConfig\priconfig.xml" "priconfig.xml"
"(…)\Hotstrings-MSIX\InputMSIX\Assets\Wide310x150Logo.scale-100.png" "Assets\Wide310x150Logo.scale-100.png"
(…)
"(…)\Hotstrings-MSIX\InputMSIX\VFS\Local AppData\Hotstrings\Languages\English.txt" "VFS\Local AppData\Hotstrings\Languages\English.txt"
(…)
"(…)\Hotstrings-MSIX\InputMSIX\VFS\Local AppData\Hotstrings\LICENSE_MIT" "VFS\Local AppData\Hotstrings\LICENSE_MIT"
(…) represents part of the file path which is not crucial or the the rest of lines excluded from above listing for clarity.
Package acceptance validation warning: The following restricted capabilities require approval before you can use them in your app: runFullTrust.