equal
deleted
inserted
replaced
|
1 #include <windows.h> |
|
2 |
|
3 #include "WinSysInfo.h" |
|
4 #include "FileUtils.h" |
|
5 #include "Executor.h" |
|
6 #include "Resources.h" |
|
7 #include "WinErrorHandling.h" |
|
8 |
|
9 |
|
10 int wmain(int argc, wchar_t *argv[]) |
|
11 { |
|
12 JP_TRY; |
|
13 |
|
14 // Create temporary directory where to extract msi file. |
|
15 const auto tempMsiDir = FileUtils::createTempDirectory(); |
|
16 |
|
17 // Schedule temporary directory for deletion. |
|
18 FileUtils::Deleter cleaner; |
|
19 cleaner.appendRecursiveDirectory(tempMsiDir); |
|
20 |
|
21 const auto msiPath = FileUtils::mkpath() << tempMsiDir << L"main.msi"; |
|
22 |
|
23 // Extract msi file. |
|
24 Resource(L"msi", RT_RCDATA).saveToFile(msiPath); |
|
25 |
|
26 // Setup executor to run msiexec |
|
27 Executor msiExecutor(SysInfo::getWIPath()); |
|
28 msiExecutor.arg(L"/i").arg(msiPath); |
|
29 for (int i = 1; i < argc; ++i) { |
|
30 msiExecutor.arg(argv[i]); |
|
31 } |
|
32 |
|
33 // Install msi file. |
|
34 return msiExecutor.execAndWaitForExit(); |
|
35 |
|
36 JP_CATCH_ALL; |
|
37 } |