diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2018-12-29 22:12:08 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2018-12-29 22:12:08 -0600 |
| commit | 61847dddd4fd497057c780658e383c4627de19ec (patch) | |
| tree | f85a845182922538ab9aa6ee85b0db3ab40c1f6e /src/stub | |
| parent | 8295f5f8fd28042e1a0a172d5afbba79178064c2 (diff) | |
| download | wix-61847dddd4fd497057c780658e383c4627de19ec.tar.gz wix-61847dddd4fd497057c780658e383c4627de19ec.tar.bz2 wix-61847dddd4fd497057c780658e383c4627de19ec.zip | |
Import code from old v4 repo
Diffstat (limited to 'src/stub')
| -rw-r--r-- | src/stub/StubSection.cpp | 23 | ||||
| -rw-r--r-- | src/stub/precomp.h | 13 | ||||
| -rw-r--r-- | src/stub/stub.cpp | 64 | ||||
| -rw-r--r-- | src/stub/stub.ico | bin | 0 -> 2238 bytes | |||
| -rw-r--r-- | src/stub/stub.manifest | 18 | ||||
| -rw-r--r-- | src/stub/stub.rc | 14 |
6 files changed, 132 insertions, 0 deletions
diff --git a/src/stub/StubSection.cpp b/src/stub/StubSection.cpp new file mode 100644 index 00000000..962bb3cf --- /dev/null +++ b/src/stub/StubSection.cpp | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | #include "precomp.h" | ||
| 4 | |||
| 5 | #pragma section(".wixburn",read) | ||
| 6 | |||
| 7 | // If these defaults ever change, be sure to update constants in burn\engine\section.cpp as well. | ||
| 8 | #pragma data_seg(push, ".wixburn") | ||
| 9 | static DWORD dwMagic = 0x00f14300; | ||
| 10 | static DWORD dwVersion = 0x00000002; | ||
| 11 | |||
| 12 | static GUID guidBundleId = { }; | ||
| 13 | |||
| 14 | static DWORD dwStubSize = 0; | ||
| 15 | static DWORD dwOriginalChecksum = 0; | ||
| 16 | static DWORD dwOriginalSignatureOffset = 0; | ||
| 17 | static DWORD dwOriginalSignatureSize = 0; | ||
| 18 | |||
| 19 | static DWORD dwContainerFormat = 1; | ||
| 20 | static DWORD dwContainerCount = 0; | ||
| 21 | static DWORD qwBootstrapperApplicationContainerSize = 0; | ||
| 22 | static DWORD qwAttachedContainerSize = 0; | ||
| 23 | #pragma data_seg(pop) | ||
diff --git a/src/stub/precomp.h b/src/stub/precomp.h new file mode 100644 index 00000000..387d4f0f --- /dev/null +++ b/src/stub/precomp.h | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | #pragma once | ||
| 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 3 | |||
| 4 | |||
| 5 | #include <windows.h> | ||
| 6 | |||
| 7 | #include <dutil.h> | ||
| 8 | #include <apputil.h> | ||
| 9 | #include <strutil.h> | ||
| 10 | #include <fileutil.h> | ||
| 11 | #include <pathutil.h> | ||
| 12 | |||
| 13 | #include "engine.h" | ||
diff --git a/src/stub/stub.cpp b/src/stub/stub.cpp new file mode 100644 index 00000000..2f09eede --- /dev/null +++ b/src/stub/stub.cpp | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | #include "precomp.h" | ||
| 4 | |||
| 5 | |||
| 6 | int WINAPI wWinMain( | ||
| 7 | __in HINSTANCE hInstance, | ||
| 8 | __in_opt HINSTANCE /* hPrevInstance */, | ||
| 9 | __in_z_opt LPWSTR lpCmdLine, | ||
| 10 | __in int nCmdShow | ||
| 11 | ) | ||
| 12 | { | ||
| 13 | HRESULT hr = S_OK; | ||
| 14 | DWORD dwExitCode = 0; | ||
| 15 | LPWSTR sczPath = NULL; | ||
| 16 | HANDLE hEngineFile = INVALID_HANDLE_VALUE; | ||
| 17 | |||
| 18 | LPCWSTR rgsczSafelyLoadSystemDlls[] = | ||
| 19 | { | ||
| 20 | L"cabinet.dll", // required by Burn. | ||
| 21 | L"msi.dll", // required by Burn. | ||
| 22 | L"version.dll", // required by Burn. | ||
| 23 | L"wininet.dll", // required by Burn. | ||
| 24 | |||
| 25 | L"comres.dll", // required by CLSIDFromProgID() when loading clbcatq.dll. | ||
| 26 | L"clbcatq.dll", // required by CLSIDFromProgID() when loading msxml?.dll. | ||
| 27 | |||
| 28 | L"msasn1.dll", // required by DecryptFile() when loading crypt32.dll. | ||
| 29 | L"crypt32.dll", // required by DecryptFile() when loading feclient.dll. | ||
| 30 | L"feclient.dll", // unsafely loaded by DecryptFile(). | ||
| 31 | }; | ||
| 32 | |||
| 33 | // Best effort attempt to get our file handle as soon as possible. | ||
| 34 | hr = PathForCurrentProcess(&sczPath, NULL); | ||
| 35 | if (SUCCEEDED(hr)) | ||
| 36 | { | ||
| 37 | hEngineFile = ::CreateFileW(sczPath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); | ||
| 38 | } | ||
| 39 | |||
| 40 | // If the engine is in the clean room, we'll do the unsafe initialization | ||
| 41 | // because some systems in Windows (namely GDI+) will fail when run in | ||
| 42 | // a process that protects against DLL hijacking. Since we know the clean | ||
| 43 | // room is in a clean folder and not subject to DLL hijacking we won't | ||
| 44 | // make ourselves perfectly secure so that we can load BAs that still | ||
| 45 | // depend on those parts of Windows that are insecure to DLL hijacking. | ||
| 46 | if (EngineInCleanRoom(lpCmdLine)) | ||
| 47 | { | ||
| 48 | AppInitializeUnsafe(); | ||
| 49 | } | ||
| 50 | else | ||
| 51 | { | ||
| 52 | AppInitialize(rgsczSafelyLoadSystemDlls, countof(rgsczSafelyLoadSystemDlls)); | ||
| 53 | } | ||
| 54 | |||
| 55 | // call run | ||
| 56 | hr = EngineRun(hInstance, hEngineFile, lpCmdLine, nCmdShow, &dwExitCode); | ||
| 57 | ExitOnFailure(hr, "Failed to run application."); | ||
| 58 | |||
| 59 | LExit: | ||
| 60 | ReleaseFileHandle(hEngineFile); | ||
| 61 | ReleaseStr(sczPath); | ||
| 62 | |||
| 63 | return FAILED(hr) ? (int)hr : (int)dwExitCode; | ||
| 64 | } | ||
diff --git a/src/stub/stub.ico b/src/stub/stub.ico new file mode 100644 index 00000000..c2e2717c --- /dev/null +++ b/src/stub/stub.ico | |||
| Binary files differ | |||
diff --git a/src/stub/stub.manifest b/src/stub/stub.manifest new file mode 100644 index 00000000..d5767cdb --- /dev/null +++ b/src/stub/stub.manifest | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
| 2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 3 | |||
| 4 | |||
| 5 | <assembly xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0"> | ||
| 6 | <assemblyIdentity name="setup.exe" version="1.0.0.0" processorArchitecture="x86" type="win32"/> | ||
| 7 | <description>WiX Toolset Bootstrapper</description> | ||
| 8 | <asmv3:application><asmv3:windowsSettings><ws:dpiAware xmlns:ws="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</ws:dpiAware></asmv3:windowsSettings></asmv3:application> | ||
| 9 | <dependency><dependentAssembly><assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /></dependentAssembly></dependency> | ||
| 10 | <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"><application> | ||
| 11 | <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> | ||
| 12 | <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> | ||
| 13 | <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> | ||
| 14 | <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> | ||
| 15 | <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> | ||
| 16 | </application></compatibility> | ||
| 17 | <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevel level="asInvoker" uiAccess="false"/></requestedPrivileges></security></trustInfo> | ||
| 18 | </assembly> | ||
diff --git a/src/stub/stub.rc b/src/stub/stub.rc new file mode 100644 index 00000000..5601703d --- /dev/null +++ b/src/stub/stub.rc | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | #define VER_APP | ||
| 4 | #define VER_ORIGINAL_FILENAME "setup.exe" | ||
| 5 | #define VER_INTERNAL_NAME "setup" | ||
| 6 | #define VER_FILE_DESCRIPTION "WiX Toolset Bootstrapper" | ||
| 7 | #include "wix.rc" | ||
| 8 | |||
| 9 | 1 ICON "stub.ico" | ||
| 10 | |||
| 11 | //#define MANIFEST_RESOURCE_ID 1 | ||
| 12 | #ifndef ARM // the ARM manifest is automatically injected but other platforms need it done manually. | ||
| 13 | //MANIFEST_RESOURCE_ID RT_MANIFEST "stub.manifest" | ||
| 14 | #endif | ||
