Remove dependency on local SDK for update re-bundling

This commit is contained in:
Caelan Sayler
2021-12-11 15:14:52 +00:00
parent c6c158c9c0
commit 1fd5e36551
6 changed files with 4 additions and 13 deletions

View File

@@ -41,6 +41,7 @@ Copy-Item -Path "$PSScriptRoot\vendor\7zip\*" -Destination "$Out" -Recurse
Copy-Item "$PSScriptRoot\vendor\NuGet.exe" -Destination "$Out" Copy-Item "$PSScriptRoot\vendor\NuGet.exe" -Destination "$Out"
Copy-Item "$PSScriptRoot\vendor\rcedit.exe" -Destination "$Out" Copy-Item "$PSScriptRoot\vendor\rcedit.exe" -Destination "$Out"
Copy-Item "$PSScriptRoot\vendor\signtool.exe" -Destination "$Out" Copy-Item "$PSScriptRoot\vendor\signtool.exe" -Destination "$Out"
Copy-Item "$PSScriptRoot\vendor\singlefilehost.exe" -Destination "$Out"
Remove-Item "$Out\*.pdb" Remove-Item "$Out\*.pdb"

View File

@@ -17,6 +17,7 @@ namespace SquirrelCli
public static string SetupPath => FindHelperExecutable("Setup.exe", _searchPaths); public static string SetupPath => FindHelperExecutable("Setup.exe", _searchPaths);
public static string UpdatePath => FindHelperExecutable("Update.exe", _searchPaths); public static string UpdatePath => FindHelperExecutable("Update.exe", _searchPaths);
public static string StubExecutablePath => FindHelperExecutable("StubExecutable.exe", _searchPaths); public static string StubExecutablePath => FindHelperExecutable("StubExecutable.exe", _searchPaths);
public static string SingleFileHostPath => FindHelperExecutable("singlefilehost.exe", _searchPaths);
// private so we don't expose paths to internal tools. these should be exposed as a helper function // private so we don't expose paths to internal tools. these should be exposed as a helper function
private static string NugetPath => FindHelperExecutable("NuGet.exe", _searchPaths); private static string NugetPath => FindHelperExecutable("NuGet.exe", _searchPaths);

View File

@@ -28,15 +28,8 @@ namespace SquirrelCli
public static async Task UpdateSingleFileIcon(string sourceFile, string destinationFile, string iconPath) public static async Task UpdateSingleFileIcon(string sourceFile, string destinationFile, string iconPath)
{ {
using var d = Utility.WithTempDirectory(out var tmpdir); using var d = Utility.WithTempDirectory(out var tmpdir);
var hostPath = Path.Combine(tmpdir, "singlefilehost.exe");
var sourceName = Path.GetFileNameWithoutExtension(sourceFile); var sourceName = Path.GetFileNameWithoutExtension(sourceFile);
// extract bundled host to file
using (var hostStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SquirrelCli.singlefilehost.exe"))
using (var file = new FileStream(hostPath, FileMode.Create, FileAccess.Write)) {
hostStream.CopyTo(file);
}
// extract Update.exe to tmp dir // extract Update.exe to tmp dir
Log.Info("Extracting Update.exe resources to temp directory"); Log.Info("Extracting Update.exe resources to temp directory");
DumpPackageAssemblies(sourceFile, tmpdir); DumpPackageAssemblies(sourceFile, tmpdir);
@@ -44,13 +37,12 @@ namespace SquirrelCli
// create new app host // create new app host
var newAppHost = Path.Combine(tmpdir, sourceName + ".exe"); var newAppHost = Path.Combine(tmpdir, sourceName + ".exe");
HostWriter.CreateAppHost( HostWriter.CreateAppHost(
hostPath, // input file HelperExe.SingleFileHostPath, // input file
newAppHost, // output file newAppHost, // output file
sourceName + ".dll", // entry point, relative to apphost sourceName + ".dll", // entry point, relative to apphost
true, // isGui? true, // isGui?
Path.Combine(tmpdir, sourceName + ".dll") // copy exe resources from? Path.Combine(tmpdir, sourceName + ".dll") // copy exe resources from?
); );
File.Delete(hostPath);
// set new icon // set new icon
Log.Info("Patching Update.exe icon"); Log.Info("Patching Update.exe icon");

View File

@@ -30,10 +30,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<!-- Requires SDK 6.0.100, used for re-compiling Update.exe with a new icon. I think it's important to take this from the SDK --> <Reference Include="..\..\vendor\Microsoft.NET.HostModel.dll" />
<!-- during build, so the bundled version of the singlefilehost matches the one used by msbuild when it first created Update.exe -->
<Reference Include="C:\Program Files\dotnet\sdk\6.0.100\Microsoft.NET.HostModel.dll" />
<EmbeddedResource Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Host.win-x86\6.0.0\runtimes\win-x86\native\singlefilehost.exe" />
</ItemGroup> </ItemGroup>
</Project> </Project>

BIN
vendor/Microsoft.NET.HostModel.dll vendored Normal file

Binary file not shown.

BIN
vendor/singlefilehost.exe vendored Normal file

Binary file not shown.