I found the solution on https://docs.digicert.com/en/software-trust-manager/code-signing/sign-with-third-party-signing-tools/sign-msix-files-with-signtool--workaround-solution-.html
Solution
🛡️ Sign .msix with Hardware Token (Microsoft Tool Workaround)
signtool.exe can’t sign .msix with hardware tokens — but Microsoft provides a workaround via a pre-release .NET tool.
🔧 Install Signing Tool
dotnet tool install --tool-path . --prerelease sign
🖋️ Sign Command (⚠️ May take several minutes)
.\sign.exe code certificate-store `
-cf "YourCert.crt" `
-td sha256 `
-cfp "SHA256_of_Cert" `
-csp "eToken Base Cryptographic Provider" `
-k "KeyContainerName" `
-i "YourApp.msix"
🔍 How to Get Parameters
🧬 -cfp: SHA256 of cert
$thumb = "THUMBPRINT"
$cert = Get-ChildItem Cert:\CurrentUser\My | Where { $_.Thumbprint -eq $thumb }
$raw = $cert.RawData
[BitConverter]::ToString((New-Object Security.Cryptography.SHA256Managed).ComputeHash($raw)) -replace "-", ""
📄 -cf: Export cert to file
Export-Certificate -Cert $cert -FilePath "YourCert.crt"
🔐 -csp / -k: Provider & Key name
$cert.PrivateKey.CspKeyContainerInfo.ProviderName
$cert.PrivateKey.CspKeyContainerInfo.KeyContainerName