Kaydet (Commit) 0701e1ab authored tarafından Andras Timar's avatar Andras Timar

remove CopyEditionData CustomAction

It is not entirely clear what this CustomAction was supposed to do, but
program\edition directory is not present in LibreOffice, therefore this
feature is useless.

Change-Id: Icfcd9c5f88da28e171329d951956baaa42908fd0
üst cf4ca992
......@@ -178,16 +178,6 @@ WindowsCustomAction gid_Customaction_Check_Install_Directory
Assignment3 = ("ControlEvent", "CustomSetup", "Next", "DoAction", "CheckInstallDirectory", "Not Installed", "2");
End
WindowsCustomAction gid_Customaction_CopyEditionData
Name = "CopyEditionData";
Typ = "1";
Source = "shlxtmsi.dll";
Target = "copyEditionData";
Inbinarytable = 1;
Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "end");
Assignment2 = ("AdminExecuteSequence", "", "end");
End
WindowsCustomAction gid_Customaction_Patch_Regpatchactivex_Patchactivexcontrol
Name = "PatchActiveXControl";
Typ = "65";
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include "sal/config.h"
#include <cstddef>
#include <new>
#include <string.h> // <cstring> not supported by old MSC versions
#define WIN32_LEAN_AND_MEAN
#if defined _MSC_VER
#pragma warning(push, 1)
#endif
#include <windows.h>
#include <msiquery.h>
#include <shellapi.h>
#if defined _MSC_VER
#pragma warning(pop)
#endif
#include "boost/scoped_array.hpp"
#define LCL_LENGTH0(s) (sizeof (s) / sizeof *(s))
#define LCL_STRING0(s) (s), LCL_LENGTH0(s)
namespace {
enum Status { STATUS_NO, STATUS_YES, STATUS_ERROR };
Status fileExists(wchar_t const * path) {
return GetFileAttributesW(path) == INVALID_FILE_ATTRIBUTES
? GetLastError() == ERROR_FILE_NOT_FOUND ? STATUS_NO : STATUS_ERROR
: STATUS_YES;
}
wchar_t * getProperty(
MSIHANDLE install, wchar_t const * name, wchar_t const * suffix,
std::size_t suffixLength, wchar_t ** end = NULL)
{
DWORD n = 0;
UINT err = MsiGetPropertyW(install, name, L"", &n);
if (err != ERROR_SUCCESS && err != ERROR_MORE_DATA) {
return NULL;
}
DWORD n2 = n + suffixLength; //TODO: overflow
wchar_t * data = new(std::nothrow) wchar_t[n2];
if (data == NULL) {
return NULL;
}
if (MsiGetPropertyW(install, name, data, &n2) != ERROR_SUCCESS || n2 != n) {
delete[] data;
return NULL;
}
memcpy(data + n, suffix, suffixLength * sizeof (wchar_t)); //TODO: overflow
if (end != NULL) {
*end = data + n + suffixLength;
}
return data;
}
}
extern "C" UINT __stdcall copyEditionData(MSIHANDLE install) {
boost::scoped_array<wchar_t> from(
getProperty(install, L"SourceDir", LCL_STRING0(L"edition\0")));
if (!from) {
return ERROR_INSTALL_FAILURE;
}
Status stat = fileExists(from.get());
if (stat == STATUS_ERROR) {
return ERROR_INSTALL_FAILURE;
}
if (stat == STATUS_NO) {
return ERROR_SUCCESS;
}
wchar_t * end;
boost::scoped_array<wchar_t> to(
getProperty(
install, L"INSTALLLOCATION",
LCL_STRING0(L"program\\edition\0"), &end));
if (!to) {
return ERROR_INSTALL_FAILURE;
}
stat = fileExists(to.get());
if (stat == STATUS_ERROR) {
return ERROR_INSTALL_FAILURE;
}
if (stat == STATUS_YES) {
SHFILEOPSTRUCTW opDelete = {
NULL, FO_DELETE, to.get(), NULL, FOF_NOCONFIRMATION | FOF_SILENT,
FALSE, NULL, NULL }; //TODO: non-NULL hwnd
if (SHFileOperationW(&opDelete) != 0) {
return ERROR_INSTALL_FAILURE;
}
}
*(end - LCL_LENGTH0(L"\\edition\0")) = L'\0';
*(end - LCL_LENGTH0(L"\\edition\0") + 1) = L'\0';
SHFILEOPSTRUCTW opCopy = {
NULL, FO_COPY, from.get(), to.get(),
FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_SILENT, FALSE, NULL,
NULL }; //TODO: non-NULL hwnd
if (SHFileOperationW(&opCopy) != 0) {
return ERROR_INSTALL_FAILURE;
}
return ERROR_SUCCESS;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -7,7 +7,6 @@ MigrateInstallPath
CheckInstallDirectory
CreateLayerLinks
RemoveLayerLinks
copyEditionData
RenamePrgFolder
RemovePrgFolder
CheckPatchList
......@@ -44,7 +44,6 @@ SLOFILES = \
$(SLO)$/completeinstallpath.obj \
$(SLO)$/checkdirectory.obj \
$(SLO)$/layerlinks.obj \
$(SLO)$/copyeditiondata.obj \
$(SLO)$/vistaspecial.obj \
$(SLO)$/checkpatches.obj
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment