/*
 * Resources for MSI
 *
 * Copyright 2005 Mike McCormack
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "windef.h"
#include "resource.h"

#pragma makedep po

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
	4 "The specified installation package could not be opened. Please check the file path and try again."
	5 "path %s not found"
	9 "insert disk %s"
	10 "Windows Installer %s\n\n" \
	"Usage:\n" \
	"msiexec command {required parameter} [optional parameter]\n\n" \
	"Install a product:\n" \
	"\t/i {package|product_code} [property]\n" \
	"\t/package {package|product_code} [property]\n" \
	"\t/a package [property]\n" \
	"Repair an installation:\n" \
	"\t/f[p|o|e|d|c|a|u|m|s|v] {package|product_code}\n" \
	"Uninstall a product:\n" \
	"\t/uninstall {package|product_code} [property]\n" \
	"\t/x {package|product_code} [property]\n" \
	"Advertise a product:\n" \
	"\t/j[u|m] package [/t transform] [/g languageid]\n" \
	"Apply a patch:\n" \
	"\t/p patch_package [property]\n" \
	"\t/p patch_package /a package [property]\n" \
	"Log and user interface modifiers for the above commands:\n" \
	"\t/l[*][i|w|e|a|r|u|c|m|o|p|v|][+|!] log_file\n" \
	"\t/q{|n|b|r|f|n+|b+|b-}\n" \
	"Register the MSI Service:\n" \
	"\t/y\n" \
	"Unregister the MSI Service:\n" \
	"\t/z\n" \
	"Display this help:\n" \
	"\t/help\n" \
	"\t/?\n"
	11 "enter which folder contains %s"
	12 "install source for feature missing"
	13 "network drive for feature missing"
	14 "feature from:"
	15 "choose which folder contains %s"
}

/* Error messages */
STRINGTABLE
{
    IDS_FATALEXIT "{{Fatal error: }}"
    IDS_ERROR "{{Error [1]. }}"
    IDS_WARNING "Warning [1]."
    IDS_INFO "Info [1]."
    IDS_INSTALLERROR "The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is [1]. {{The arguments are: [2], [3], [4]}}"
    IDS_OUTOFDISKSPACE "{{Disk full: }}"
    IDS_ACTIONSTART "Action [Time]: [1]. [2]"
    IDS_COMMONDATA "Message type: [1], Argument: [2]{, [3]}"
    IDS_INFO_ACTIONSTART "Action start [Time]: [1]."
    IDS_INFO_ACTIONENDED "Action ended [Time]: [1]. Return value [2]."
    IDS_INFO_LOGGINGSTART "=== Logging started: [Date]  [Time] ==="

    IDS_ERR_INSERTDISK "Please insert the disk: [2]"
    IDS_ERR_CABNOTFOUND "Source file not found{{(cabinet)}}: [2]. Verify that the file exists and that you can access it."
}

/* Standard action description strings */
STRINGTABLE
{
    IDS_DESC_ALLOCATEREGISTRYSPACE "Allocating registry space"
    IDS_DESC_APPSEARCH "Searching for installed applications"
    IDS_DESC_BINDIMAGE "Binding executables"
    IDS_DESC_CCPSEARCH "Searching for qualifying products"
    IDS_DESC_COSTFINALIZE "Computing space requirements"
    IDS_DESC_COSTINITIALIZE "Computing space requirements"
    IDS_DESC_CREATEFOLDERS "Creating folders"
    IDS_DESC_CREATESHORTCUTS "Creating shortcuts"
    IDS_DESC_DELETESERVICES "Deleting services"
    IDS_DESC_DUPLICATEFILES "Creating duplicate files"
    IDS_DESC_FILECOST "Computing space requirements"
    IDS_DESC_FINDRELATEDPRODUCTS "Searching for related applications"
    IDS_DESC_INSTALLADMINPACKAGE "Copying network install files"
    IDS_DESC_INSTALLFILES "Copying new files"
    IDS_DESC_INSTALLODBC "Installing ODBC components"
    IDS_DESC_INSTALLSERVICES "Installing new services"
    IDS_DESC_INSTALLSFPCATALOGFILE "Installing system catalog"
    IDS_DESC_INSTALLVALIDATE "Validating install"
    IDS_DESC_LAUNCHCONDITIONS "Evaluating launch conditions"
    IDS_DESC_MIGRATEFEATURESTATES "Migrating feature states from related applications"
    IDS_DESC_MOVEFILES "Moving files"
    IDS_DESC_MSIPUBLISHASSEMBLIES "Publishing assembly information"
    IDS_DESC_MSIUNPUBLISHASSEMBLIES "Unpublishing assembly information"
    IDS_DESC_PATCHFILES "Patching files"
    IDS_DESC_PROCESSCOMPONENTS "Updating component registration"
    IDS_DESC_PUBLISHCOMPONENTS "Publishing Qualified Components"
    IDS_DESC_PUBLISHFEATURES "Publishing Product Features"
    IDS_DESC_PUBLISHPRODUCT "Publishing product information"
    IDS_DESC_REGISTERCLASSINFO "Registering Class servers"
    IDS_DESC_REGISTERCOMPLUS "Registering COM+ Applications and Components"
    IDS_DESC_REGISTEREXTENSIONINFO "Registering extension servers"
    IDS_DESC_REGISTERFONTS "Registering fonts"
    IDS_DESC_REGISTERMIMEINFO "Registering MIME info"
    IDS_DESC_REGISTERPRODUCT "Registering product"
    IDS_DESC_REGISTERPROGIDINFO "Registering program identifiers"
    IDS_DESC_REGISTERTYPELIBRARIES "Registering type libraries"
    IDS_DESC_REGISTERUSER "Registering user"
    IDS_DESC_REMOVEDUPLICATEFILES "Removing duplicated files"
    IDS_DESC_REMOVEENVIRONMENTSTRINGS "Updating environment strings"
    IDS_DESC_REMOVEEXISTINGPRODUCTS "Removing applications"
    IDS_DESC_REMOVEFILES "Removing files"
    IDS_DESC_REMOVEFOLDERS "Removing folders"
    IDS_DESC_REMOVEINIVALUES "Removing INI files entries"
    IDS_DESC_REMOVEODBC "Removing ODBC components"
    IDS_DESC_REMOVEREGISTRYVALUES "Removing system registry values"
    IDS_DESC_REMOVESHORTCUTS "Removing shortcuts"
    IDS_DESC_RMCCPSEARCH "Searching for qualifying products"
    IDS_DESC_SELFREGMODULES "Registering modules"
    IDS_DESC_SELFUNREGMODULES "Unregistering modules"
    IDS_DESC_SETODBCFOLDERS "Initializing ODBC directories"
    IDS_DESC_STARTSERVICES "Starting services"
    IDS_DESC_STOPSERVICES "Stopping services"
    IDS_DESC_UNPUBLISHCOMPONENTS "Unpublishing Qualified Components"
    IDS_DESC_UNPUBLISHFEATURES "Unpublishing Product Features"
    IDS_DESC_UNPUBLISHPRODUCT "Unpublishing product information"
    IDS_DESC_UNREGISTERCLASSINFO "Unregister Class servers"
    IDS_DESC_UNREGISTERCOMPLUS "Unregistering COM+ Applications and Components"
    IDS_DESC_UNREGISTEREXTENSIONINFO "Unregistering extension servers"
    IDS_DESC_UNREGISTERFONTS "Unregistering fonts"
    IDS_DESC_UNREGISTERMIMEINFO "Unregistering MIME info"
    IDS_DESC_UNREGISTERPROGIDINFO "Unregistering program identifiers"
    IDS_DESC_UNREGISTERTYPELIBRARIES "Unregistering type libraries"
    IDS_DESC_WRITEENVIRONMENTSTRINGS "Updating environment strings"
    IDS_DESC_WRITEINIVALUES "Writing INI files values"
    IDS_DESC_WRITEREGISTRYVALUES "Writing system registry values"
}

/* Standard action template strings */
STRINGTABLE
{
    IDS_TEMP_ALLOCATEREGISTRYSPACE "Free space: [1]"
    IDS_TEMP_APPSEARCH "Property: [1], Signature: [2]"
    IDS_TEMP_BINDIMAGE "File: [1]"
    IDS_TEMP_CREATEFOLDERS "Folder: [1]"
    IDS_TEMP_CREATESHORTCUTS "Shortcut: [1]"
    IDS_TEMP_DELETESERVICES "Service: [1]"
    IDS_TEMP_DUPLICATEFILES "File: [1],  Directory: [9],  Size: [6]"
    IDS_TEMP_FINDRELATEDPRODUCTS "Found application: [1]"
    IDS_TEMP_INSTALLADMINPACKAGE "File: [1], Directory: [9], Size: [6]"
    IDS_TEMP_INSTALLFILES "File: [1],  Directory: [9],  Size: [6]"
    IDS_TEMP_INSTALLSERVICES "Service: [2]"
    IDS_TEMP_INSTALLSFPCATALOGFILE "File: [1],  Dependencies: [2]"
    IDS_TEMP_MIGRATEFEATURESTATES "Application: [1]"
    IDS_TEMP_MOVEFILES "File: [1],  Directory: [9],  Size: [6]"
    IDS_TEMP_MSIPUBLISHASSEMBLIES "Application Context:[1], Assembly Name:[2]"
    IDS_TEMP_MSIUNPUBLISHASSEMBLIES "Application Context:[1], Assembly Name:[2]"
    IDS_TEMP_PATCHFILES "File: [1],  Directory: [2],  Size: [3]"
    IDS_TEMP_PUBLISHCOMPONENTS "Component ID: [1], Qualifier: [2]"
    IDS_TEMP_PUBLISHFEATURES "Feature: [1]"
    IDS_TEMP_REGISTERCLASSINFO "Class Id: [1]"
    IDS_TEMP_REGISTERCOMPLUS "AppId: [1]{{, AppType: [2], Users: [3], RSN: [4]}}"
    IDS_TEMP_REGISTEREXTENSIONINFO "Extension: [1]"
    IDS_TEMP_REGISTERFONTS "Font: [1]"
    IDS_TEMP_REGISTERMIMEINFO "MIME Content Type: [1], Extension: [2]"
    IDS_TEMP_REGISTERPROGIDINFO "ProgId: [1]"
    IDS_TEMP_REGISTERTYPELIBRARIES "LibID: [1]"
    IDS_TEMP_REMOVEDUPLICATEFILES "File: [1], Directory: [9]"
    IDS_TEMP_REMOVEENVIRONMENTSTRINGS "Name: [1], Value: [2], Action [3]"
    IDS_TEMP_REMOVEEXISTINGPRODUCTS "Application: [1], Command line: [2]"
    IDS_TEMP_REMOVEFILES "File: [1], Directory: [9]"
    IDS_TEMP_REMOVEFOLDERS "Folder: [1]"
    IDS_TEMP_REMOVEINIVALUES "File: [1],  Section: [2],  Key: [3], Value: [4]"
    IDS_TEMP_REMOVEREGISTRYVALUES "Key: [1], Name: [2]"
    IDS_TEMP_REMOVESHORTCUTS "Shortcut: [1]"
    IDS_TEMP_SELFREGMODULES "File: [1], Folder: [2]"
    IDS_TEMP_SELFUNREGMODULES "File: [1], Folder: [2]"
    IDS_TEMP_STARTSERVICES "Service: [1]"
    IDS_TEMP_STOPSERVICES "Service: [1]"
    IDS_TEMP_UNPUBLISHCOMPONENTS "Component ID: [1], Qualifier: [2]"
    IDS_TEMP_UNPUBLISHFEATURES "Feature: [1]"
    IDS_TEMP_UNREGISTERCLASSINFO "Class Id: [1]"
    IDS_TEMP_UNREGISTERCOMPLUS "AppId: [1]{{, AppType: [2]}}"
    IDS_TEMP_UNREGISTEREXTENSIONINFO "Extension: [1]"
    IDS_TEMP_UNREGISTERFONTS "Font: [1]"
    IDS_TEMP_UNREGISTERMIMEINFO "MIME Content Type: [1], Extension: [2]"
    IDS_TEMP_UNREGISTERPROGIDINFO "ProgId: [1]"
    IDS_TEMP_UNREGISTERTYPELIBRARIES "LibID: [1]"
    IDS_TEMP_WRITEENVIRONMENTSTRINGS "Name: [1], Value: [2], Action [3]"
    IDS_TEMP_WRITEINIVALUES "File: [1],  Section: [2],  Key: [3], Value: [4]"
    IDS_TEMP_WRITEREGISTRYVALUES "Key: [1], Name: [2], Value: [3]"
}

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

/* @makedep: msiserver.rgs */
1 WINE_REGISTRY msiserver.rgs

/* @makedep: instadvert.bmp */
0x1001 BITMAP instadvert.bmp

/* @makedep: instabsent.bmp */
0x1002 BITMAP instabsent.bmp

/* @makedep: instlocal.bmp */
0x1003 BITMAP instlocal.bmp

#define WINE_FILEDESCRIPTION_STR "Wine MSI dll"
#define WINE_FILENAME_STR "msi.dll"
#define WINE_FILEVERSION 4,5,6001,22308
#define WINE_FILEVERSION_STR "4.5.6001.22308"
#define WINE_PRODUCTVERSION 4,5,6001,22308
#define WINE_PRODUCTVERSION_STR "4.5.6001.22308"

#include "wine/wine_common_ver.rc"
