src/jdk.jpackage/windows/native/msiwrapper/MsiWrapper.cpp
author herrick
Wed, 28 Aug 2019 11:30:40 -0400
branchJDK-8200758-branch
changeset 57909 c7de06ed4b54
parent 57444 91e9d4691e5e
permissions -rw-r--r--
8229979: jpackage cleanup src files, help text, and javadoc Reviewed-by: asemenyuk, kcr
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
57909
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     1
#include <algorithm>
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     2
#include <windows.h>
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     3
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     4
#include "SysInfo.h"
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     5
#include "FileUtils.h"
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     6
#include "Executor.h"
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     7
#include "Resources.h"
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     8
#include "WinErrorHandling.h"
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
     9
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    10
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    11
int __stdcall WinMain(HINSTANCE, HINSTANCE, LPSTR lpCmdLine, int nShowCmd)
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    12
{
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    13
    JP_TRY;
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    14
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    15
    // Create temporary directory where to extract msi file.
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    16
    const auto tempMsiDir = FileUtils::createTempDirectory();
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    17
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    18
    // Schedule temporary directory for deletion.
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    19
    FileUtils::Deleter cleaner;
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    20
    cleaner.appendRecursiveDirectory(tempMsiDir);
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    21
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    22
    const auto msiPath = FileUtils::mkpath() << tempMsiDir << L"main.msi";
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    23
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    24
    // Extract msi file.
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    25
    Resource(L"msi", RT_RCDATA).saveToFile(msiPath);
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    26
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    27
    // Setup executor to run msiexec
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    28
    Executor msiExecutor(SysInfo::getWIPath());
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    29
    msiExecutor.arg(L"/i").arg(msiPath);
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    30
    const auto args = SysInfo::getCommandArgs();
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    31
    std::for_each(args.begin(), args.end(),
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    32
            [&msiExecutor] (const tstring& arg) {
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    33
        msiExecutor.arg(arg);
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    34
    });
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    35
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    36
    // Install msi file.
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    37
    return msiExecutor.execAndWaitForExit();
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    38
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    39
    JP_CATCH_ALL;
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    40
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    41
    return -1;
c7de06ed4b54 8229979: jpackage cleanup src files, help text, and javadoc
herrick
parents: 57444
diff changeset
    42
}