Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Single-project MSIX doesn't support producing a MSIX Bundle #1808

Open
andrewleader opened this issue Nov 17, 2021 · 29 comments
Open

Single-project MSIX doesn't support producing a MSIX Bundle #1808

andrewleader opened this issue Nov 17, 2021 · 29 comments
Labels
area-DeveloperTools Issues related to authoring (source and IDL), debugging, HotReload, LiveVisualTree, VS integration bug Something isn't working theme-FitAndFinish Bugs/features that affect the overall quality/experience and final fit and finish of the product

Comments

@andrewleader
Copy link
Contributor

Describe the bug

Despite selecting "Generate app bundle = Always" in the UI, a .msixbundle file is not generated. The root cause is that single-project MSIX doesn't support generating MSIX Bundles today, however that manifests as a bug to the developer since the UI allows you to select an option that doesn't work.

image

Steps to reproduce the bug

  1. Create a new app
  2. Use the Package & Publish UI to start creating a package
  3. Select "Generate app bundle = Always" and select two build combinations
  4. Attempt to build the package
  5. Notice a silent error occurs
Microsoft.Build.Msix.Packaging.targets(341,5): error MSB6011: Invalid parameters passed to the Microsoft.Build.Msix.Symbols.WinAppSdkCheckFastlinkPdb task.
  1. Notice that no bundle is created, only separate MSIX's

Expected behavior

A bundle should be created.

Screenshots

No response

NuGet package version

1.0.0

Packaging type

Packaged (MSIX)

Windows version

No response

IDE

Visual Studio 2022-preview

Additional context

No response

@andrewleader andrewleader added bug Something isn't working area-DeveloperTools Issues related to authoring (source and IDL), debugging, HotReload, LiveVisualTree, VS integration labels Nov 17, 2021
@andrewleader andrewleader added this to the 1.1 milestone Nov 17, 2021
@andrewleader andrewleader added area-Other frameworks theme-FitAndFinish Bugs/features that affect the overall quality/experience and final fit and finish of the product and removed area-Other frameworks labels Nov 17, 2021
@JanRajnoha
Copy link

What is the status of issue?

@JanRajnoha
Copy link

Is any workaround for creating msixbundle? @andrewleader

@koenvd
Copy link

koenvd commented Sep 14, 2022

Any update on this one @andrewleader ? Or possible workaround ...

@JPTGamesAndApps
Copy link

JPTGamesAndApps commented Sep 21, 2022

Manual workaround for those in need:

  • Create folders Parent and Parent\Package.
  • Copy the .msix files to Package folder.
  • Execute the command below. Update the path as relevant.
  • Will produce the .msixbundle in the Parent folder.

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\MakeAppx.exe" bundle /d "C:...\Parent\Package" /p "C:...\Parent\AppName_Bundle.msixbundle"

Theoretically someone should be able to create a post build script (and integrate it with VS project), but no success here so far.

@JanRajnoha
Copy link

Any update @evelynwu-msft ?

@evelynwu-msft
Copy link
Contributor

Unfortunately support for this won't be part of the 1.2 release.

@erikvanappeldoorn
Copy link

Would love to see support for .msixbundles in VS 2022. It is currently blocking me from upgrading an existing UWP Microsoft Store app to WinUI3

@mattleibow
Copy link

mattleibow commented Jan 14, 2023

Been hacking away at this and I think I got something that will make this all work wonderfully:

https://gist.github.com/mattleibow/8332ed79b569c9d7bbdae64a6e8142a6

@zhuxb711
Copy link

zhuxb711 commented Jan 14, 2023

My Github Action for misxbundle, hope that will help somebody. This will produce exactly same files as Uwp application

    env:
      AppxBundle: Always
      AppxPackageBuildMode: SideloadOnly
      Configuration: Release
      ProjectName: <Your Project Name>
      CertThumbprint: <Your Thumbprint>
      SolutionPath: ${{github.workspace}}\<Your_Solution_Name>.sln
      CertificationPath: ${{github.workspace}}\<Your_Certification_Name>.pfx
      X64OutputPath: ${{github.workspace}}\Output\x64\
      ARM64OutputPath: ${{github.workspace}}\Output\arm64\
      BundleOutputPath: ${{github.workspace}}\Output\Bundle
      AppMainfestPath: ${{github.workspace}}\<Your_Solution_Name>\Package.appxmanifest

    steps:
      - name: Get current version
        id: versionStep
        run: |
          $xml = [XML](Get-Content $env:AppMainfestPath)
          $version = $xml.Package.Identity.Version
          echo "Version=$version" >> $env:GITHUB_OUTPUT

      - name: Decode the SignCert
        run: |
          $pfxBase64 = [System.Convert]::FromBase64String("${{secrets.SIGNCERT}}")
          [IO.File]::WriteAllBytes("$env:CertificationPath", $pfxBase64)

      - name: Create the X64 msix pacakge
        run: msbuild $env:SolutionPath /nologo /nr:false /t:Clean /p:Configuration=$env:Configuration /t:${{env.ProjectName}}:Rebuild /p:Platform=$env:Platform /p:UapAppxPackageBuildMode=$env:AppxPackageBuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:CertificationPath /p:PackageCertificatePassword=${{secrets.SIGNCERTPASSWORD}} /p:PackageCertificateThumbprint=$env:CertThumbprint /p:AppxPackageDir=$env:X64OutputPath /p:GenerateAppxPackageOnBuild=true
        env:
          Platform: x64

      - name: Create the ARM64 msix pacakge
        run: msbuild $env:SolutionPath /nologo /nr:false /t:Clean /p:Configuration=$env:Configuration /t:${{env.ProjectName}}:Rebuild /p:Platform=$env:Platform /p:UapAppxPackageBuildMode=$env:AppxPackageBuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:CertificationPath /p:PackageCertificatePassword=${{secrets.SIGNCERTPASSWORD}} /p:PackageCertificateThumbprint=$env:CertThumbprint /p:AppxPackageDir=$env:ARM64OutputPath /p:GenerateAppxPackageOnBuild=true
        env:
          Platform: arm64

      - name: Generate the msixbundle folder with all the msix files
        run: |
          New-Item -Path $env:BundleOutputPath -ItemType Directory -Force

          $x64MsixFiles = Get-ChildItem -Path $env:X64OutputPath -Recurse -Include *.msix
          $arm64MsixFiles = Get-ChildItem -Path $env:ARM64OutputPath -Recurse -Include *.msix

          $x64MsixFiles | ForEach-Object {
              Copy-Item -Path $_ -Destination $env:BundleOutputPath
          }

          $arm64MsixFiles | ForEach-Object {
              Copy-Item -Path $_ -Destination $env:BundleOutputPath
          }

      - name: MSIX Bundler
        uses: LanceMcCarthy/Action-MsixBundler@v1.0.1
        with:
          msix-folder: ${{env.BundleOutputPath}}
          msixbundle-filepath: ${{env.BundleOutputPath}}\Your_App_Name_${{steps.versionStep.outputs.Version}}_x64_arm64.msixbundle
          msixbundle-version: ${{steps.versionStep.outputs.Version}}
          sdk-version: 10.0.22621.0
          architecture: x64
          enable-bundle-signing: true
          certificate-path: ${{env.CertificationPath}}
          certificate-private-key: ${{secrets.SIGNCERTPASSWORD}}
          signing-hash-algorithm: SHA256

      - name: Cleanup redundant and secret files
        run: |
          Remove-Item -Path $env:CertificationPath

          $msixFiles = Get-ChildItem -Path $env:BundleOutputPath -Recurse -Exclude *.msixbundle
          $msixFiles | ForEach-Object {
              Remove-Item -Path $_
          }

      - name: Copy optional files
        run: |
          $optionalFiles = Get-ChildItem -Path $env:X64OutputPath -Recurse -Include *.cer,*.ps1,*.msixsym
          $optionalFiles | ForEach-Object {
              Copy-Item -Path $_ -Destination $env:BundleOutputPath
          }

          $resourceDirectory = Get-ChildItem -Path $env:X64OutputPath -Directory -Recurse -Include Add-AppDevPackage.resources
          $resourceDirectory | ForEach-Object {
              Copy-Item -Recurse -Path $_ -Destination $env:BundleOutputPath
          }

          $oldCertName = (Get-Item -Path "$env:BundleOutputPath\*.cer").Name
          $newCertName = $oldCertName.Replace("x64","x64_arm64")
          Rename-Item -Path "$env:BundleOutputPath\$oldCertName" -NewName $newCertName

          $arm64symfiles = Get-ChildItem -Path $env:ARM64OutputPath -Recurse -Include *.msixsym
          $arm64symfiles | ForEach-Object {
            Copy-Item -Path $_ -Destination $env:BundleOutputPath
          }

      - name: Upload MSIXBUNDLE package
        uses: actions/upload-artifact@v3.1.2
        with:
          name: MSIXBUNDLE Package
          path: ${{env.BundleOutputPath}}

@JanRajnoha
Copy link

I started using in my Azure DevOps pipelines something similar -> VS Build task for creating msix, call PowerShell for bundling (move msix to temp folder, call MakeAppx.exe) and that's working without problems.

@mattleibow
Copy link

Very nice! Many ways to bundle this cat :)

@EdAlexander
Copy link

This is a major issue that has been open for almost 6 months without resolution (blocking me from releasing now). Microsoft, can you give an update here on when we can expect closure? What the actual issue is?

@wjk
Copy link

wjk commented Apr 18, 2023

For anyone who’s interested, have a look here: https://github.com/wjk/WindowsLogViewer/blob/main/build/targets/MsixBundle.targets

This MSBuild file I wrote can be used to add msixbundle support to a single-project build by running the Publish target multiple times. I have successfully used it to create msixbundles for Store upload. You will need to have this included in your csproj somehow; I reference it via a chain of files from Directory.Build.targets. I just released it under MIT (the app itself is GPLv3).

@JanRajnoha
Copy link

Hi @evelynwu-msft, do you have any info about this bug? You said it won't be part of 1.2 release and I think it won't be in 1.3 too, so could we have any guarantee it will be included in 1.4?

@MagnusJohansson
Copy link

@wjk When I try to use your MsixBundle.targets file, I get this error:

MakeAppx : error : For file "\\?\E:\repos\temp\WinUI-Test\WinUI-Test\bin\Release\net7.0-windows10.0.22621"" - Failure at opcFactory->CreateStreamOnFile(longFilePath, ioMode, NULL, FILE_ATTRIBUTE_NORMAL, fileStream) - 0x80
07007b - The filename, directory name, or volume label syntax is incorrect. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]
  
MakeAppx : error : Failure at (GetFileStream(bundleName, OPC_STREAM_IO_WRITE, &packageStream)) - 0x8007007b - The filename, directory name, or volume label syntax is incorrect. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-T
est.csproj]

MakeAppx : error : Bundle creation failed. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]

MakeAppx : error : 0x8007007b - The filename, directory name, or volume label syntax is incorrect. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]

E:\repos\temp\WinUI-Test\WinUI-Test\MsixBundle.targets(122,5): error MSB3073: The command ""C:\Users\magnu\.nuget\packages\microsoft.windows.sdk.buildtools\10.0.22621.756\bin\10.0.22621.0\x64\MakeAppx.exe" bundle /v /o /f 
 "obj\Release\net7.0-windows10.0.22621\win10-x64\msixbundle.files" /p "bin\Release\net7.0-windows10.0.22621\"" exited with code 1. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]

Build FAILED.
My .csproj file
<Project Sdk="Microsoft.NET.Sdk">
	<PropertyGroup>
		<OutputType>WinExe</OutputType>
		<TargetFramework>net7.0-windows10.0.22621</TargetFramework>
		<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
		<RootNamespace>WinUI_Test</RootNamespace>
		<ApplicationManifest>app.manifest</ApplicationManifest>
		<Platforms>x86;x64;ARM64</Platforms>
		<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
		<PublishProfile>win10-$(Platform).pubxml</PublishProfile>
		<UseWinUI>true</UseWinUI>
		<EnableMsixTooling>true</EnableMsixTooling>
		<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
		<Nullable>enable</Nullable>
		<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
		<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
		<AppxSymbolPackageEnabled>False</AppxSymbolPackageEnabled>
		<GenerateTestArtifacts>True</GenerateTestArtifacts>
		<AppxBundle>Always</AppxBundle>
		<AppxBundlePlatforms>x86|x64|arm64</AppxBundlePlatforms>
		<HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
	</PropertyGroup>

	<ItemGroup>
		<Content Include="Assets\SplashScreen.scale-200.png" />
		<Content Include="Assets\LockScreenLogo.scale-200.png" />
		<Content Include="Assets\Square150x150Logo.scale-200.png" />
		<Content Include="Assets\Square44x44Logo.scale-200.png" />
		<Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
		<Content Include="Assets\Wide310x150Logo.scale-200.png" />
	</ItemGroup>

	<ItemGroup>
		<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
		<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
		<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.3.230331000" />
		<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.756" />
		<Manifest Include="$(ApplicationManifest)" />
	</ItemGroup>

	<!-- 
    Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
    Tools extension to be activated for this project even if the Windows App SDK Nuget
    package has not yet been restored.
  -->
	<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
		<ProjectCapability Include="Msix" />
	</ItemGroup>

	<!-- 
    Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution 
    Explorer "Package and Publish" context menu entry to be enabled for this project even if 
    the Windows App SDK Nuget package has not yet been restored.
  -->
	<PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
		<HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
	</PropertyGroup>
	<Import Project="MsixBundle.targets" />
</Project>
My MsixBundle.targets file
<Project>
  <!-- From: https://gist.github.com/mattleibow/8332ed79b569c9d7bbdae64a6e8142a6 -->

  <!--
    =======================================================================
    Microsoft.Build.Msix.Packaging.MsixBundle.targets
    =======================================================================
    
    This targets file can be imported at the bottom of the main app project file (.csproj):
    
      <Import Project="Microsoft.Build.Msix.Packaging.MsixBundle.targets" />
    
    In order to build a .msix bundle, you can use `dotnet build`:
    
      dotnet build /t:GenerateMsixBundle -f net7.0-windows10.0.19041.0 <path/to/app.csproj>
    
    In order to control the RIDs in the app bundle, you can override them using the $(RuntimeIdentifiers)
    propertyin your .csproj. Make sure to condition on the Windows TargetFramework:
    
      <PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">
        <RuntimeIdentifiers>win10-x64;win10-x86;win10-arm64</RuntimeIdentifiers>
      </PropertyGroup>
  -->

  <!-- Make sure all the available RIDs are specified -->
  <PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifiers)' == ''">
    <RuntimeIdentifiers>win10-x64;win10-x86;win10-arm64</RuntimeIdentifiers>
  </PropertyGroup>

  <!-- Make at least one RID is specified for the IDE -->
  <PropertyGroup Condition=" '$([MSBuild]::GetTargetPlatformIdentifier($(TargetFramework)))' == 'windows' and '$(RuntimeIdentifier)' == '' ">
    <_SingleProjectHostArchitecture>$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture)</_SingleProjectHostArchitecture>
    <_SingleProjectHostArchitecture>$(_SingleProjectHostArchitecture.ToLower())</_SingleProjectHostArchitecture>
    <RuntimeIdentifier>win10-$(_SingleProjectHostArchitecture)</RuntimeIdentifier>
  </PropertyGroup>

  <!-- Workaround for https://github.com/microsoft/WindowsAppSDK/issues/3337 -->
  <PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
    <RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
  </PropertyGroup>

  <!-- This runs inside each publish to determine the output path of the generated .msix -->
  <Target
    Name="_GenerateMsixBundlePublish"
    Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'"
    DependsOnTargets="Publish"
    Returns="@(_MsixPackageOutput)">

    <ItemGroup>
      <_MsixPackageOutput
        Include="$(AppxPackageOutput)"
        AppxPackageNameNeutral="$(AppxPackageNameNeutral)"
        AppxBundleExtension="$(AppxBundleExtension)"
        AppxPackageConfiguration="$(_AppxPackageConfiguration)" />
    </ItemGroup>

  </Target>

  <!-- This runs once to build the .msixbundle -->
  <Target
    Name="GenerateMsixBundle"
    Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">

    <!-- build up the matrix of the project to RID -->
    <ItemGroup>
      <_MsixBundleRID Include="$(RuntimeIdentifiers)" />
    </ItemGroup>

    <!-- Compute the platform for each RID, as it must be manually specified -->
    <ItemGroup>
      <_MsixBundleRID Update="@(_MsixBundleRID)" Condition="$([System.String]::Copy('%(Identity)').EndsWith('x64'))">
        <Platform>x64</Platform>
      </_MsixBundleRID>
      <_MsixBundleRID Update="@(_MsixBundleRID)" Condition="$([System.String]::Copy('%(Identity)').EndsWith('x86'))">
        <Platform>x86</Platform>
      </_MsixBundleRID>
      <_MsixBundleRID Update="@(_MsixBundleRID)" Condition="$([System.String]::Copy('%(Identity)').EndsWith('arm64'))">
        <Platform>ARM64</Platform>
      </_MsixBundleRID>
    </ItemGroup>

    <ItemGroup>
      <_MsixBundleProject Include="$(MSBuildProjectFile)" AdditionalProperties="Configuration=$(Configuration);Platform=%(_MsixBundleRID.Platform);RuntimeIdentifierOverride=%(_MsixBundleRID.Identity)" />
    </ItemGroup>

    <!-- publish the project for each RID -->
    <MSBuild
      Projects="@(_MsixBundleProject)"
      Targets="_GenerateMsixBundlePublish"
      BuildInParallel="$(BuildInParallel)">
      <Output
        TaskParameter="TargetOutputs"
        ItemName="_MsixPackageOutput" />
    </MSBuild>

    <!-- determine all the properties of the .msixbundle -->
    <PropertyGroup>
      <AppxPackageNameNeutral>%(_MsixPackageOutput.AppxPackageNameNeutral)</AppxPackageNameNeutral>
      <AppxBundleExtension>%(_MsixPackageOutput.AppxBundleExtension)</AppxBundleExtension>
      <AppxPackageConfiguration>%(_MsixPackageOutput.AppxPackageConfiguration)</AppxPackageConfiguration>
      <_MsixBundlePath>$(PackageOutputPath)$(TargetFramework)\$(AppxPackageNameNeutral)$(AppxPackageConfiguration)$(AppxBundleExtension)</_MsixBundlePath>
      <_MsixBundleFilesPath>$(IntermediateOutputPath)msixbundle.files</_MsixBundleFilesPath>
    </PropertyGroup>

    <!-- determine all the files of the .msixbundle -->
    <ItemGroup>
      <_MsixBundleFilesLines Include="[Files]" />
      <_MsixBundleFilesLines Include="@(_MsixPackageOutput->'&quot;%(FullPath)&quot; &quot;%(Filename)%(Extension)&quot;')" />
    </ItemGroup>

    <!-- write out the files -->
    <WriteLinesToFile
      File="$(_MsixBundleFilesPath)"
      Lines="@(_MsixBundleFilesLines)"
      Overwrite="True"
      WriteOnlyWhenDifferent="True" />
    <ItemGroup>
      <FileWrites Include="$(_MsixBundleFilesPath)" />
    </ItemGroup>

    <!-- generate the .msix bundle -->
    <Exec Command="&quot;$(MakeAppxExeFullPath)&quot; bundle /v /o /f &quot;$(_MsixBundleFilesPath)&quot; /p &quot;$(_MsixBundlePath)&quot;" />

    <!-- sign the .msix bundle -->
    <WinAppSdkSignAppxPackage
      Condition="'$(AppxPackageSigningEnabled)' == 'true'"
      AppxPackageToSign="$(_MsixBundlePath)"
      CertificateThumbprint="$(PackageCertificateThumbprint)"
      CertificateFile="$(PackageCertificateKeyFile)"
      HashAlgorithmId="$(AppxHashAlgorithmId)"
      EnableSigningChecks="$(EnableSigningChecks)"
      SignAppxPackageExeFullPath="$(SignAppxPackageExeFullPath)"
      TempCertificateFilePath="$(TempCertificateFilePath)"
      ExportCertificate="true">
      <Output TaskParameter="ResolvedThumbprint" PropertyName="ResolvedThumbPrint"/>
      <Output TaskParameter="AppxPackagePublicKeyFile" PropertyName="AppxPackagePublicKeyFile" />
    </WinAppSdkSignAppxPackage>

  </Target>

</Project>

My command:

dotnet build -c Release /t:GenerateMsixBundle -f net7.0-windows10.0.22621 .\WinUI-Test.csproj

Any ideas what it could be?

@wjk
Copy link

wjk commented Apr 24, 2023

It looks to me like there is a stray double-quote at the end of the $(_MsixBundlePath) property.

@MagnusJohansson
Copy link

It looks to me like there is a stray double-quote at the end of the $(_MsixBundlePath) property.

Can't find that... which line are you referring to?

However, when building with -v n (verbosity normal),
dotnet build -c Release /t:GenerateMsixBundle -f net7.0-windows10.0.22621 .\WinUI-Test.csproj -v n
I can observe that the msixbundle.files file doesn't contain any .msix files, it's empty...:

Output details
         Option /v specified, switching to verbose output.

         Option /o specified, existing files will be overwritten.

         The path (/p) parameter is: "\\?\E:\repos\temp\WinUI-Test\WinUI-Test\bin\Release\net7.0-windows10.0.22621""

         The mapping file (/f) parameter is: "obj\Release\net7.0-windows10.0.22621\win10-x64\msixbundle.files"

         Reading mapping file "obj\Release\net7.0-windows10.0.22621\win10-x64\msixbundle.files"

         [Files] section found on line 1.

         Packing 0 file(s) listed in "obj\Release\net7.0-windows10.0.22621\win10-x64\msixbundle.files" (mapping file) to "\\?\E:\repos\temp\WinUI-Test\WinUI-Test\bin\Release\net7.0-windows10.0.22621"" (output file name).

     1>MakeAppx : error : For file "\\?\E:\repos\temp\WinUI-Test\WinUI-Test\bin\Release\net7.0-windows10.0.22621"" - Failure at opcFactory->CreateStreamOnFile(longFilePath, ioMode, NULL, FILE_ATTRIBUTE_NORMAL, fileStream) - 0x8007007b - The filenam 
       e, directory name, or volume label syntax is incorrect. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]

     1>MakeAppx : error : Failure at (GetFileStream(bundleName, OPC_STREAM_IO_WRITE, &packageStream)) - 0x8007007b - The filename, directory name, or volume label syntax is incorrect. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]

     1>MakeAppx : error : Bundle creation failed. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]

     1>MakeAppx : error : 0x8007007b - The filename, directory name, or volume label syntax is incorrect. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]

     1>E:\repos\temp\WinUI-Test\WinUI-Test\MsixBundle.targets(122,5): error MSB3073: The command ""C:\Users\magnu\.nuget\packages\microsoft.windows.sdk.buildtools\10.0.22621.756\bin\10.0.22621.0\x64\MakeAppx.exe" bundle /v /o /f "obj\Release\net7.0 
       -windows10.0.22621\win10-x64\msixbundle.files" /p "bin\Release\net7.0-windows10.0.22621\"" exited with code 1. [E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj]
     1>Done Building Project "E:\repos\temp\WinUI-Test\WinUI-Test\WinUI-Test.csproj" (GenerateMsixBundle target(s)) -- FAILED.

@wjk
Copy link

wjk commented Apr 24, 2023

@MagnusJohansson

"\\?\E:\repos\temp\WinUI-Test\WinUI-Test\bin\Release\net7.0-windows10.0.22621""

One quote at the beginning, two at the end.

@bastecklein
Copy link

Any word on this? Seems like a fairly large error to just go ignored for so long, particularly when they are encouraging developers to migrate from UWP to Windows App SDK...

@JanRajnoha
Copy link

Okay, @evelynwu-msft ignored me, so probably @gabbybilka or @andrewleader could share some info

@SnowyWreath
Copy link

Can we get some transparency here? We need to be able to plan. This clearly missed the 1.1 milestone (and then some). So, what is the new target?

@tom-huntington
Copy link

This is very frustrating. If I upload the .misx to the store I get

A previous submission for this app was released with a Windows 10 .msixbundle or .appxbundle. Subsequent submissions must continue to contain a Windows 10 .msixbundle or .appxbundle.

This is because WinUI3 use to have a separate project for packaging which created a bundle. Now I must continue to submit bundles but the AppSDK wont generate them

@zhuxb711
Copy link

zhuxb711 commented Sep 9, 2023

Any progress on this issue?

@SprengerS
Copy link

We are now creating the msixbundle after migrating from UWP via command line in our CI. The migration from UWP to WinUI3 is not very good. The migration is a disaster!!

@tipa
Copy link

tipa commented Nov 7, 2023

Kind of mind-boggling there is just zero progress on this issue. Microsoft doesn't want us to publish apps apparently. Even the milestone hasn't been updated and still stands at "1.1"

@guldud
Copy link

guldud commented Apr 10, 2024

I just want MSBuild to work. I don't understand why this bug is still around.

@JanRajnoha
Copy link

@duncanmacmichael

@duncanmacmichael duncanmacmichael removed this from the 1.1 milestone Apr 12, 2024
@duncanmacmichael
Copy link
Member

Hi @JanRajnoha, thanks for the ping. I checked with the team on this and it looks like it's something we have on our radar but with no concrete details to share right now. I did go ahead and at least clear the old milestone off, though.

@Siyh
Copy link

Siyh commented Jul 19, 2024

any update on this please @duncanmacmichael?

@evelynwu-msft evelynwu-msft removed their assignment Sep 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-DeveloperTools Issues related to authoring (source and IDL), debugging, HotReload, LiveVisualTree, VS integration bug Something isn't working theme-FitAndFinish Bugs/features that affect the overall quality/experience and final fit and finish of the product
Projects
None yet
Development

No branches or pull requests