1. Switch CommandLauncher from a console application to a windows application so that no windows pop up during install.

2. Handle spaces in files names.
This commit is contained in:
Greg Richardson 2007-01-31 20:24:41 +00:00
parent 9dbe2a3ade
commit f357e87c11
21 changed files with 1072 additions and 425 deletions

View File

@ -47,6 +47,7 @@ public class ClientKeystoreSetup
String sInstallDir;
Properties properties;
int rc;
// debug stuff
File file;
@ -55,12 +56,12 @@ public class ClientKeystoreSetup
public static void main(String[] args)
{
ClientKeystoreSetup p = new ClientKeystoreSetup(args);
p = null;
System.exit(p.rc);
}
ClientKeystoreSetup(String[] args)
{
int rc;
rc = ERROR_NO_ERROR;
try
{
@ -96,24 +97,53 @@ public class ClientKeystoreSetup
{
rc = ERROR_IO_EXCEPTION;
}
System.exit(rc);
}
int processArgs(String[] args)
int processArgs(String[] argsOld)
{
String sProperties;
File fileInstallDir = null;
File fileProperties = null;
FileInputStream fisProperties = null;
int iOld;
int i;
String args[] = new String[argsOld.length];
int iNew;
log("Original arg count " + argsOld.length);
for (i = 0; i < argsOld.length; i++)
{
log("Arg " + i + " = " + argsOld[i] + "\r\n");
}
// Validate the number of parameters
if (args.length < 2)
if (argsOld.length < 2)
{
return ERROR_INVALID_NUMBER_OF_PARAMS;
}
iNew = -1;
for (iOld = 0; iOld < argsOld.length; iOld++)
{
if (0 <= argsOld[iOld].indexOf("="))
{
iNew++;
args[iNew] = argsOld[iOld];
for (i = iOld + 1; i < argsOld.length && (-1 == argsOld[i].indexOf("=")); i++)
{
args[iNew] += " " + argsOld[i];
}
}
}
log("New arg count " + args.length);
for (i = 0; i < args.length; i++)
{
log("Arg " + i + " = " + args[i] + "\r\n");
}
for (i = 0; i <= iNew; i++)
{
// is this the install dir param?
if (args[i].startsWith(INSTALL_DIR))

View File

@ -1,136 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <process.h>
#include <errno.h>
#define ERROR_NO_ERROR 0
#define ERROR_MEMORY_ALLOCATION_FAILED -1
#define ERROR_INVALID_NUMBER_OF_PARAMETERS -2
#define ERROR_EXEC_E2BIG -3
#define ERROR_EXEC_EACCES -4
#define ERROR_EXEC_EINVAL -5
#define ERROR_EXEC_EMFILE -6
#define ERROR_EXEC_ENOENT -7
#define ERROR_EXEC_ENOEXEC -8
#define ERROR_EXEC_ENOMEM -9
#define ERROR_EXEC_UNKNOWN -10
char * errorMessage(int err)
{
switch (err)
{
case ERROR_NO_ERROR:
return "No error\n";
case ERROR_MEMORY_ALLOCATION_FAILED:
return "Memory allocation failed\n";
case ERROR_INVALID_NUMBER_OF_PARAMETERS:
return "Invalid number of parameters\n";
case ERROR_EXEC_E2BIG:
return "_exec: The space required for the arguments and environment settings exceeds 32 KB.\n";
case ERROR_EXEC_EACCES:
return "_exec: The specified file has a locking or sharing violation.\n";
case ERROR_EXEC_EINVAL:
return "_exec: Invalid parameter.\n";
case ERROR_EXEC_EMFILE:
return "_exec: Too many files open (the specified file must be opened to determine whether it is executable).\n";
case ERROR_EXEC_ENOENT:
return "_exec: The file or path not found.\n";
case ERROR_EXEC_ENOEXEC:
return "_exec: The specified file is not executable or has an invalid executable-file format.\n";
case ERROR_EXEC_ENOMEM:
return "_exec: Not enough memory is available to execute the new process; the available memory has been corrupted; or an invalid block exists, indicating that the calling process was not allocated properly.\n";
case ERROR_EXEC_UNKNOWN:
return "Unknown _exec error.\n";
default:
return "Unknown error.\n";
}
}
int main( int cArg, char* rgArg[] )
{
int cArgCommand = cArg; // Take one off for the name of this exe, then add
// one for the null at the end of the arg list.
int i; // Looping variable
int rc = ERROR_NO_ERROR; // Return code
char **rgArgCommand; // An array for the command args
// Make sure we got enough parameters to execute.
if( cArg < 4)
{
fprintf(stderr, errorMessage(ERROR_MEMORY_ALLOCATION_FAILED));
fprintf( stderr, "Usage: %s <full path path to java.exe> <-cp classpath> <class> [arg1 [arg2 [...]]]\n", rgArg[0] );
return ERROR_INVALID_NUMBER_OF_PARAMETERS;
}
// Allocate room to the arglist for the cal to exec
rgArgCommand = (char **)malloc(sizeof(char *)*cArgCommand);
// Did the memory allocation succeed?
if (NULL == rgArgCommand)
{
fprintf(stderr, errorMessage(ERROR_MEMORY_ALLOCATION_FAILED));
return ERROR_MEMORY_ALLOCATION_FAILED;
}
fprintf( stderr, "Arg count = %d\n", cArg);
fprintf( stderr, "Command arg count = %d\n", cArgCommand);
// copy over the arguments for the command
for (i = 1; i < cArg; i++)
{
fprintf(stderr, "rgArgCommand[%d] = rgArg[%d] (%s)\n", (i - 1), i, rgArg[i]);
rgArgCommand[i - 1] = rgArg[i];
}
// null out the command arg array
fprintf( stderr, "null out rgArgCommand[%d]\n",i);
rgArgCommand[cArgCommand - 1] = (char *)0;
// exec the command
if (-1 == _execv( rgArg[1], rgArgCommand))
{
switch (errno)
{
case E2BIG: // The space required for the arguments and environment settings exceeds 32 KB.
rc = ERROR_EXEC_E2BIG;
break;
case EACCES: // The specified file has a locking or sharing violation.
rc = ERROR_EXEC_EACCES;
break;
case EINVAL: // Invalid parameter.
rc = ERROR_EXEC_EINVAL;
break;
case EMFILE: // Too many files open (the specified file must be opened to determine whether it is executable).
rc = ERROR_EXEC_EMFILE;
break;
case ENOENT: // The file or path not found.
rc = ERROR_EXEC_ENOENT;
break;
case ENOEXEC: // The specified file is not executable or has an invalid executable-file format.
rc = ERROR_EXEC_ENOEXEC;
break;
case ENOMEM: // Not enough memory is available to execute the new process; the available memory has been
// corrupted; or an invalid block exists, indicating that the calling process was not allocated
// properly.
rc = ERROR_EXEC_ENOMEM;
break;
default:
rc = ERROR_EXEC_UNKNOWN;
break;
}
}
free(rgArgCommand);
return rc;
}

View File

@ -0,0 +1,499 @@
// CommandLauncher.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "CommandLauncher.h"
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <process.h>
#include <errno.h>
WCHAR ** G_rgArgs; // Command line arguments
int G_cArg; // Count of command line arguments
FILE * G_pf;
// Forward declarations of functions included in this code module:
int processArguments(LPTSTR lpCmdLine);
void freeArgs();
int countArgs(LPTSTR lpCmdLine);
int addArg(int iArg, LPTSTR lpString, int cChar);
void log(LPTSTR szMessage);
_TCHAR * errorMessage(int err);
int executeCommand( int cArg, _TCHAR* rgArg[]);
#define ERROR_NO_ERROR 0
#define ERROR_MEMORY_ALLOCATION_FAILED -1
#define ERROR_INVALID_NUMBER_OF_PARAMETERS -2
#define ERROR_EXEC_E2BIG -3
#define ERROR_EXEC_EACCES -4
#define ERROR_EXEC_EINVAL -5
#define ERROR_EXEC_EMFILE -6
#define ERROR_EXEC_ENOENT -7
#define ERROR_EXEC_ENOEXEC -8
#define ERROR_EXEC_ENOMEM -9
#define ERROR_EXEC_UNKNOWN -10
#define ERROR_STRCPY_FAILED -11
#define ERROR_JAVA_EXE_ARG_MISSING -12
#define ERROR_JAVA_CLASSPATH_OPTION_ARG_MISSING -13
#define ERROR_JAVA_CLASSPATH_ARG_MISSING -14
#define ERROR_BAD_COMMAND_LINE -15
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hInstance);
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
UNREFERENCED_PARAMETER(nCmdShow);
int rc;
_wfopen_s(&G_pf, L"C:\\CommandLauncher.log", L"a+");
// Process the command line
if (ERROR_NO_ERROR != (rc = processArguments(lpCmdLine)))
{
return rc;
}
rc = executeCommand(G_cArg, G_rgArgs);
log(errorMessage(rc));
fwprintf(G_pf, L"CommandLauncher: return = %d\n", rc);
fclose(G_pf);
return rc;
}
// <java exe path> -cp <classpath> class k1=v1 k2=k2
int processArguments(LPTSTR lpCmdLine)
{
int iArg;
int iChar;
int iAssignment;
int iClassStart;
int iClassEnd;
int iClassPathStart;
int iClassPathEnd;
int rc;
bool fClasspathOptionFound = false;
int iKeyStart;
int iValueEnd;
fwprintf( G_pf, L"current command line = %s\n", lpCmdLine);
// Validate the command line
if (NULL == lpCmdLine || (WCHAR)0 == *lpCmdLine)
{
return ERROR_BAD_COMMAND_LINE;
}
// Count the arguments on the command line. TThe name of this executable
// is not included in the count.
G_cArg = countArgs(lpCmdLine);
// Make sure we got enough to exec something. There must be at least the
// path to jave.exe, the classpath option, the classpath and a class.
if (G_cArg < 4)
{
return ERROR_INVALID_NUMBER_OF_PARAMETERS;
}
// Allocate an array of wide string for the arguments, add 1 for a NULL at
// the end of the array
G_rgArgs = (WCHAR**)malloc((G_cArg + 1) * sizeof(WCHAR *));
if (NULL == G_rgArgs)
{
return ERROR_MEMORY_ALLOCATION_FAILED;
}
// Null out the array
memset(G_rgArgs, 0, (G_cArg + 1) * sizeof(WCHAR *));
// Find the java.exe argument
iChar = 0;
for (iChar = 0; 0 != lpCmdLine[iChar + 4]; iChar++)
{
if (0 == _wcsnicmp(lpCmdLine + iChar, L".exe", 4))
{
break;
}
}
if (0 == lpCmdLine[iChar + 4])
{
rc = ERROR_JAVA_EXE_ARG_MISSING;
goto ErrorOut;
}
// Add the java.exe argument
if (ERROR_NO_ERROR != (rc = addArg(0, lpCmdLine, iChar + 4)))
{
goto ErrorOut;
}
// Move past the java.exe argument
iChar += 4;
// Move past any spaces
for (;L' ' == lpCmdLine[iChar]; iChar++)
{
// Intentionally left blank
}
// Find the classpath argument
for (; 0 != lpCmdLine[iChar + 3]; iChar++)
{
if (0 == _wcsnicmp(lpCmdLine + iChar, L"-cp", 3))
{
fClasspathOptionFound = true;
break;
}
}
if (!fClasspathOptionFound)
{
rc = ERROR_JAVA_CLASSPATH_OPTION_ARG_MISSING;
goto ErrorOut;
}
if (0 == lpCmdLine[iChar + 3])
{
rc = ERROR_JAVA_CLASSPATH_ARG_MISSING;
goto ErrorOut;
}
// Add the classpath option argument
if (ERROR_NO_ERROR != (rc = addArg(1, L"-cp", iChar + 3)))
{
goto ErrorOut;
}
// Move past the classpath option argument
iChar += 3;
// Move past any spaces
for (;L' ' == lpCmdLine[iChar]; iChar++)
{
// Intentionally left blank
}
// The classpath is next. It can have spaces in it so we need to work
// backards from the first key/value pair, or the end of the line if
// there are no key/value pairs.
iClassPathStart = iChar;
// Find the location of the next '='
for (; 0 != lpCmdLine[iChar] && L'=' != lpCmdLine[iChar]; iChar++)
{
// Intentially left blank
}
// If there was a key/value pair - move to the start of the key
if (L'=' == lpCmdLine[iChar])
{
iAssignment = iChar;
// Move back to the previous space. This should put us at the
// beginning of the first key/value pair. Assume that all args
// are property key/value pairs and property keys have no spaces.
for (; L' ' != lpCmdLine[iChar] && iChar >= 0; iChar--)
{
// Intentially left blank
}
}
else
{
iAssignment = 0;
iChar--;
}
// Move past any spaces (moving toward the start of the line)
for (;L' ' == lpCmdLine[iChar]; iChar--)
{
// Intentionally left blank
}
// This should put us at the end of the class to be executed
iClassEnd = iChar;
// Move to the previous space (moving toward the start of the line)
for (;L' ' != lpCmdLine[iChar]; iChar--)
{
// Intentionally left blank
}
iClassStart = iChar + 1;
// Add the class argument
if (ERROR_NO_ERROR != (rc = addArg(3, lpCmdLine + iClassStart, iClassEnd - iClassStart + 1)))
{
goto ErrorOut;
}
// Move past any spaces (moving toward the start of the line)
for (;L' ' == lpCmdLine[iChar]; iChar--)
{
// Intentionally left blank
}
// This should put us at the end of the classpath
iClassPathEnd = iChar;
// Add the class path argument
if (ERROR_NO_ERROR != (rc = addArg(2, lpCmdLine + iClassPathStart, iClassPathEnd - iClassPathStart + 1)))
{
goto ErrorOut;
}
// Are the any key/value pairs?
if (0 != iAssignment)
{
iArg = 4;
while (0 != lpCmdLine[iAssignment])
{
iKeyStart = iAssignment;
// Move back to the previous space. This should put us at the
// beginning of the current next key/value pair. Assume that all args
// are property key/value pairs and property keys have no spaces.
for (; L' ' != lpCmdLine[iKeyStart] && iKeyStart > 0; iKeyStart--)
{
// Intentially left blank
}
if (L' ' == lpCmdLine[iKeyStart])
{
iKeyStart++;
}
// Find the location of the next '='
iValueEnd = iAssignment + 1;
for (; 0 != lpCmdLine[iValueEnd] && L'=' != lpCmdLine[iValueEnd]; iValueEnd++)
{
// Intentially left blank
}
// If there was a property...
if (L'=' == lpCmdLine[iValueEnd])
{
iAssignment = iValueEnd;
// Move back to the previous space. This should put us at the
// beginning of the next key/value pair. Assume that all args
// are property key/value pairs and property keys have no spaces.
for (; L' ' != lpCmdLine[iValueEnd] && iValueEnd >= 0; iValueEnd--)
{
// Intentially left blank
}
}
else
{
// We have reached the end of the command line - back off from the
// null terminator.
iAssignment = iValueEnd;
iValueEnd--;
}
// Move thorugh any spaces
for (; L' ' == lpCmdLine[iValueEnd] && iValueEnd >= 0; iValueEnd--)
{
// Intentially left blank
}
// Add the key/value pair
if (ERROR_NO_ERROR != (rc = addArg(iArg, lpCmdLine + iKeyStart, iValueEnd - iKeyStart + 1)))
{
goto ErrorOut;
}
// Go on to the next arg
iArg++;
}
}
return ERROR_NO_ERROR;
ErrorOut:
freeArgs();
log(errorMessage(rc));
return rc;
}
void freeArgs()
{
int iArg;
if (NULL != G_rgArgs)
{
for (iArg = 0; iArg < G_cArg; iArg++)
{
if (NULL != G_rgArgs[iArg])
{
free(G_rgArgs[iArg]);
G_rgArgs[iArg] = NULL;
}
}
free(G_rgArgs);
G_rgArgs = NULL;
}
}
int countArgs(LPTSTR lpCmdLine)
{
int cArgument;
// Check if the exe to execute is the only argument. Assume that all additional
// arguments have an '=' in them.
for (cArgument = 4; *lpCmdLine != (WCHAR)0; lpCmdLine++)
{
if (*lpCmdLine == L'=')
{
cArgument++;
}
}
return cArgument;
}
int addArg(int iArg, LPTSTR lpString, int cChar)
{
int cb = (cChar + 3) * sizeof(WCHAR); // count of bytes
// Allocate space for the new arg
G_rgArgs[iArg] = (WCHAR *)malloc(cb);
if (NULL == G_rgArgs[iArg])
{
return ERROR_MEMORY_ALLOCATION_FAILED;
}
// Null out the argument
memset(G_rgArgs[iArg], 0, cb);
// Add a starting quote
// G_rgArgs[iArg][0] = L'\"';
// Copy the arg
if (0 != wcsncpy_s(G_rgArgs[iArg], cChar + 1, lpString, cChar))
{
return ERROR_STRCPY_FAILED;
}
// Add a terminating quote
// G_rgArgs[iArg][cb-1] = L'\"';
return ERROR_NO_ERROR;
}
void log(LPTSTR szMessage)
{
LPTSTR szT = L"";
if (NULL == szMessage)
szMessage = szT;
fwprintf(G_pf, L"JavaLauncher: %s\n", szMessage);
}
_TCHAR * errorMessage(int err)
{
switch (err)
{
case ERROR_NO_ERROR:
return L"No error\n";
case ERROR_MEMORY_ALLOCATION_FAILED:
return L"Memory allocation failed\n";
case ERROR_INVALID_NUMBER_OF_PARAMETERS:
return L"Invalid number of parameters\n";
case ERROR_EXEC_E2BIG:
return L"_exec: The space required for the arguments and environment settings exceeds 32 KB.\n";
case ERROR_EXEC_EACCES:
return L"_exec: The specified file has a locking or sharing violation.\n";
case ERROR_EXEC_EINVAL:
return L"_exec: Invalid parameter.\n";
case ERROR_EXEC_EMFILE:
return L"_exec: Too many files open (the specified file must be opened to determine whether it is executable).\n";
case ERROR_EXEC_ENOENT:
return L"_exec: The file or path not found.\n";
case ERROR_EXEC_ENOEXEC:
return L"_exec: The specified file is not executable or has an invalid executable-file format.\n";
case ERROR_EXEC_ENOMEM:
return L"_exec: Not enough memory is available to execute the new process; the available memory has been corrupted; or an invalid block exists, indicating that the calling process was not allocated properly.\n";
case ERROR_EXEC_UNKNOWN:
return L"Unknown _exec error.\n";
case ERROR_STRCPY_FAILED:
return L"String copy failed.\n";
case ERROR_JAVA_CLASSPATH_OPTION_ARG_MISSING:
return L"Classpath option \"-cp\" missing\n";
case ERROR_JAVA_CLASSPATH_ARG_MISSING:
return L"Classpath argument missing\n";
case ERROR_BAD_COMMAND_LINE:
return L"Bad command line\n";
default:
return L"Unknown error.\n";
}
}
int executeCommand( int cArg, _TCHAR* rgArg[] )
{
int i; // Looping variable
int rc = ERROR_NO_ERROR; // Return code
fwprintf( G_pf, L"Arg count = %d\n", cArg);
for (i = 0; i < cArg; i++)
{
fwprintf(G_pf, L"rgArg[%d] (%s)\n", i, rgArg[i]);
}
// exec the command
// if (-1 == _wexecv( rgArg[0], rgArg))
if (-1 == _wspawnv(_P_WAIT, rgArg[0], rgArg))
{
switch (errno)
{
case E2BIG: // The space required for the arguments and environment settings exceeds 32 KB.
rc = ERROR_EXEC_E2BIG;
break;
case EACCES: // The specified file has a locking or sharing violation.
rc = ERROR_EXEC_EACCES;
break;
case EINVAL: // Invalid parameter.
rc = ERROR_EXEC_EINVAL;
break;
case EMFILE: // Too many files open (the specified file must be opened to determine whether it is executable).
rc = ERROR_EXEC_EMFILE;
break;
case ENOENT: // The file or path not found.
rc = ERROR_EXEC_ENOENT;
break;
case ENOEXEC: // The specified file is not executable or has an invalid executable-file format.
rc = ERROR_EXEC_ENOEXEC;
break;
case ENOMEM: // Not enough memory is available to execute the new process; the available memory has been
// corrupted; or an invalid block exists, indicating that the calling process was not allocated
// properly.
rc = ERROR_EXEC_ENOMEM;
break;
default:
rc = ERROR_EXEC_UNKNOWN;
break;
}
}
fwprintf(G_pf, L"ExecuteCommand returning %d\n", rc);
return rc;
}

View File

@ -0,0 +1,3 @@
#pragma once
#include "resource.h"

View File

@ -4,6 +4,8 @@
Version="8.00"
Name="CommandLauncher"
ProjectGUID="{B52EF84A-D745-4637-9F59-DBD6E21C179C}"
RootNamespace="CommandLauncher"
Keyword="Win32Proj"
>
<Platforms>
<Platform
@ -15,9 +17,10 @@
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="./bin"
OutputDirectory="bin"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
@ -36,6 +39,15 @@
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@ -48,6 +60,10 @@
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
@ -76,9 +92,11 @@
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="./bin"
OutputDirectory="bin"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
@ -97,6 +115,12 @@
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
RuntimeLibrary="2"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@ -109,6 +133,12 @@
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
@ -145,15 +175,47 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\CommandLauncher.c"
RelativePath=".\CommandLauncher.cpp"
>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\CommandLauncher.h"
>
</File>
<File
RelativePath=".\Resource.h"
>
</File>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"

View File

@ -57,7 +57,7 @@ package-clean clean-local:
rm -rf Release/* Release Debug/* Debug*/Release */Debug *.log *.suo
clean:
rm -rf Release/* Release Debug/* Debug */Release */Debug *.log *.suo
rm -rf Release/* Release Debug/* Debug */Release */Debug *.log *.suo bin/* bin
distclean-local: package-clean
rm -f Makefile

View File

@ -1,3 +1,8 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>

View File

@ -1 +1 @@
Manifest resource last updated at 15:03:11.42 on Wed 01/24/2007
Manifest resource last updated at 13:12:58.17 on Wed 01/31/2007

View File

@ -0,0 +1,31 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by CommandLauncher.rc
//
#define IDS_APP_TITLE 103
#define IDR_MAINFRAME 128
#define IDD_COMMANDLAUNCHER_DIALOG 102
#define IDD_ABOUTBOX 103
#define IDM_ABOUT 104
#define IDM_EXIT 105
#define IDI_COMMANDLAUNCHER 107
#define IDI_SMALL 108
#define IDC_COMMANDLAUNCHER 109
#define IDC_MYICON 2
#ifndef IDC_STATIC
#define IDC_STATIC -1
#endif
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 130
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif

View File

@ -0,0 +1,8 @@
// stdafx.cpp : source file that includes just the standard includes
// CommandLauncher.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

View File

@ -0,0 +1,37 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER // Allow use of features specific to Windows XP or later.
#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
#endif
#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later.
#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE.
#endif
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
// TODO: reference additional headers your program requires here

View File

@ -52,6 +52,8 @@ public class InitConfigFile
final static int ERROR_MISSING_TEMPLATE_FILE_PARAM = -27;
final static int ERROR_MISSING_OUTPUT_FILE_PARAM = -28;
final static int ERROR_BAD_PROPERTY_PARAM = -29;
final static int ERROR_UNABLE_TO_OPEN_TEMPLATE = -30;
final static int ERROR_FILEWRITER_CREATE_FAILED = -31;
final static String TEMPLATE_FILE_PARAM = "template=";
final static String OUTPUT_FILE_PARAM = "output=";
@ -65,21 +67,24 @@ public class InitConfigFile
File fileTemplate;
File fileOutput;
File file;
FileWriter fw;
//FileWriter fw;
RandomAccessFile raf;
String[] rgsSearchFor;
String[] rgsReplaceWith;
String sInstallDir;
String sTemplate;
String sOutput;
int rc;
public static void main(String[] args)
{
InitConfigFile p = new InitConfigFile(args);
System.exit(p.rc);
}
InitConfigFile(String[] args)
{
int rc = ERROR_NO_ERROR;
rc = ERROR_NO_ERROR;
properties = new Properties();
fileProperties = null;
@ -90,13 +95,10 @@ public class InitConfigFile
try
{
file = new File("c:\\test.log");
fw = new FileWriter(file);
//fw = new FileWriter(file);
log("Here we go: " + args.length);
for (int i = 0; i < args.length; i++)
{
log("Arg " + i + " = " + args[i]);
}
raf = new RandomAccessFile(file, "rw");
raf.seek(raf.length());
// Process the arguments
if (ERROR_NO_ERROR == (rc = processArgs(args)))
@ -117,32 +119,55 @@ public class InitConfigFile
{
try
{
log(rc);
fw.flush();
fw.close();
log(rc, " " + sOutput + "\n\n\n");
//raf.flush();
raf.close();
}
catch (Exception e1)
{
}
}
System.exit(rc);
}
int processArgs(String[] args)
int processArgs(String[] argsOld)
{
String sProperties;
File fileInstallDir = null;
int i;
int iEquals;
String sKey;
String sValue;
int iOld;
int i;
String args[] = new String[argsOld.length];
int iNew;
log("Original arg count " + argsOld.length);
for (i = 0; i < argsOld.length; i++)
{
log("Arg " + i + " = " + argsOld[i] + "\r\n");
}
// Validate the number of parameters
if (args.length < 3)
if (argsOld.length < 2)
{
return ERROR_INVALID_NUMBER_OF_PARAMS;
}
iNew = -1;
for (iOld = 0; iOld < argsOld.length; iOld++)
{
if (0 <= argsOld[iOld].indexOf("="))
{
iNew++;
args[iNew] = argsOld[iOld];
for (i = iOld + 1; i < argsOld.length && (-1 == argsOld[i].indexOf("=")); i++)
{
args[iNew] += " " + argsOld[i];
}
}
}
log("New arg count " + args.length);
for (i = 0; i < args.length; i++)
{
log("arg[" + i + "] = " +args[i]);
@ -171,6 +196,7 @@ public class InitConfigFile
return ERROR_INSTALL_DIR_NOT_A_DIR;
}
log("Adding property (key = " + INSTALL_DIR_PROPERTY + " - value = " + sInstallDir);
properties.setProperty(INSTALL_DIR_PROPERTY, sInstallDir);
}
@ -246,6 +272,7 @@ public class InitConfigFile
}
sKey = args[i].substring(0, iEquals);
sValue = args[i].substring(iEquals + 1);
log("Adding property (key = " + sKey + " - value = " + sValue);
properties.setProperty(sKey, sValue);
}
}
@ -287,6 +314,7 @@ public class InitConfigFile
rgsSearchFor = new String[properties.size()];
rgsReplaceWith = new String[properties.size()];
log("property count = " + properties.size());
while (e.hasMoreElements())
{
sKey = (String)e.nextElement();
@ -323,7 +351,7 @@ public class InitConfigFile
}
catch (Exception e)
{
return -40;
return ERROR_UNABLE_TO_OPEN_TEMPLATE;
}
try
@ -332,7 +360,7 @@ public class InitConfigFile
}
catch (Exception e)
{
return -41;
return ERROR_FILEWRITER_CREATE_FAILED;
}
try
{
@ -454,6 +482,12 @@ public class InitConfigFile
case ERROR_UNABLE_TO_READ_PROPERTIES:
sMessage = "Unable to read properties file";
break;
case ERROR_UNABLE_TO_OPEN_TEMPLATE:
sMessage = "Unable to open template";
break;
case ERROR_FILEWRITER_CREATE_FAILED:
sMessage = "FileWriter create failed";
break;
default:
sMessage = "Unknown error: " + err;
break;
@ -470,7 +504,7 @@ public class InitConfigFile
{
try
{
fw.write(this.getClass().getName() + ": " + s + "\r\n");
raf.writeUTF(this.getClass().getName() + ": " + s + "\r\n");
}
catch (IOException ioe)
{

View File

@ -52,15 +52,17 @@ public class MungeCryptoPropertiesFilePath
FileWriter fw;
String sInput;
String sOutput;
int rc;
public static void main(String[] args)
{
MungeCryptoPropertiesFilePath p = new MungeCryptoPropertiesFilePath(args);
System.exit(p.rc);
}
MungeCryptoPropertiesFilePath(String[] args)
{
int rc = ERROR_NO_ERROR;
rc = ERROR_NO_ERROR;
fileInput = null;
fileOutput = null;
@ -100,20 +102,48 @@ public class MungeCryptoPropertiesFilePath
{
}
}
System.exit(rc);
}
int processArgs(String[] args)
int processArgs(String[] argsOld)
{
int iOld;
int i;
String args[] = new String[argsOld.length];
int iNew;
log("Original arg count " + argsOld.length);
for (i = 0; i < argsOld.length; i++)
{
log("Arg " + i + " = " + argsOld[i] + "\r\n");
}
// Validate the number of parameters
if (args.length != 2)
if (argsOld.length < 2)
{
return ERROR_INVALID_NUMBER_OF_PARAMS;
}
iNew = -1;
for (iOld = 0; iOld < argsOld.length; iOld++)
{
if (0 <= argsOld[iOld].indexOf("="))
{
iNew++;
args[iNew] = argsOld[iOld];
for (i = iOld + 1; i < argsOld.length && (-1 == argsOld[i].indexOf("=")); i++)
{
args[iNew] += " " + argsOld[i];
}
}
}
log("New arg count " + args.length);
for (i = 0; i < args.length; i++)
{
log("Arg " + i + " = " + args[i] + "\r\n");
}
for (i = 0; i <= iNew; i++)
{
log("arg[" + i + "] = " +args[i]);
@ -250,7 +280,7 @@ public class MungeCryptoPropertiesFilePath
break;
case ERROR_MISSING_INPUT_FILE:
sMessage = "Invalid number of parameters: 2 expected";
sMessage = "Missing input file";
break;
case ERROR_OUTPUT_COPY_FAILED:

View File

@ -47,6 +47,7 @@ public class ServerKeystoreSetup
String sInstallDir;
Properties properties;
int rc;
// debug stuff
File file;
@ -55,26 +56,18 @@ public class ServerKeystoreSetup
public static void main(String[] args)
{
ServerKeystoreSetup p = new ServerKeystoreSetup(args);
p = null;
System.exit(p.rc);
}
ServerKeystoreSetup(String[] args)
{
int rc;
rc = ERROR_NO_ERROR;
try
{
// DEBUG STUFF
file = new File("c:\\test2.log");
fw = new FileWriter(file);
log("Here we go again: " + args.length);
for (int i = 0; i < args.length; i++)
{
log("Arg " + i + " = " + args[i] + "\r\n");
}
// DEBUG STUFF
// Process the input params
if (ERROR_NO_ERROR == (rc = processArgs(args)))
{
@ -96,16 +89,24 @@ public class ServerKeystoreSetup
{
rc = ERROR_IO_EXCEPTION;
}
System.exit(rc);
}
int processArgs(String[] args)
int processArgs(String[] argsOld)
{
String sProperties;
File fileInstallDir = null;
File fileProperties = null;
FileInputStream fisProperties = null;
int iOld;
int i;
String args[] = new String[argsOld.length];
int iNew;
log("Original arg count " + argsOld.length);
for (i = 0; i < argsOld.length; i++)
{
log("Arg " + i + " = " + argsOld[i] + "\r\n");
}
// Validate the number of parameters
if (args.length < 2)
@ -113,7 +114,28 @@ public class ServerKeystoreSetup
return ERROR_INVALID_NUMBER_OF_PARAMS;
}
iNew = -1;
for (iOld = 0; iOld < argsOld.length; iOld++)
{
if (0 <= argsOld[iOld].indexOf("="))
{
iNew++;
args[iNew] = argsOld[iOld];
for (i = iOld + 1; i < argsOld.length && (-1 == argsOld[i].indexOf("=")); i++)
{
args[iNew] += " " + argsOld[i];
}
}
}
log("New arg count " + args.length);
for (i = 0; i < args.length; i++)
{
log("Arg " + i + " = " + args[i] + "\r\n");
}
for (i = 0; i <= iNew; i++)
{
// is this the install dir param?
if (args[i].startsWith(INSTALL_DIR))

View File

@ -58,15 +58,17 @@ public class SetupAsWindowsService
FileWriter fw;
String sInstallDir;
String sOutput;
int rc;
public static void main(String[] args)
{
SetupAsWindowsService p = new SetupAsWindowsService(args);
System.exit(p.rc);
}
SetupAsWindowsService(String[] args)
{
int rc = ERROR_NO_ERROR;
rc = ERROR_NO_ERROR;
properties = new Properties();
fileProperties = null;
@ -111,24 +113,47 @@ public class SetupAsWindowsService
{
}
}
System.exit(rc);
}
int processArgs(String[] args)
int processArgs(String[] argsOld)
{
String sProperties;
File fileInstallDir = null;
int i;
int iEquals;
String sKey;
String sValue;
int iOld;
int i;
String args[] = new String[argsOld.length];
int iNew;
log("Original arg count " + argsOld.length);
for (i = 0; i < argsOld.length; i++)
{
log("Arg " + i + " = " + argsOld[i] + "\r\n");
}
// Validate the number of parameters
if (args.length != 2)
if (args.length < 2)
{
return ERROR_INVALID_NUMBER_OF_PARAMS;
}
iNew = -1;
for (iOld = 0; iOld < argsOld.length; iOld++)
{
if (0 <= argsOld[iOld].indexOf("="))
{
iNew++;
args[iNew] = argsOld[iOld];
for (i = iOld + 1; i < argsOld.length && (-1 == argsOld[i].indexOf("=")); i++)
{
args[iNew] += " " + argsOld[i];
}
}
}
log("New arg count " + args.length);
for (i = 0; i < args.length; i++)
{
log("arg[" + i + "] = " +args[i]);

View File

@ -60,16 +60,16 @@ public class UpdateWarFile
String sInstallDir;
File file;
FileWriter fw;
int rc;
public static void main(String[] args)
{
UpdateWarFile p = new UpdateWarFile(args);
System.exit(p.rc);
}
UpdateWarFile(String[] args)
{
int rc = ERROR_NO_ERROR;
sInstallDir = null;
try
@ -106,20 +106,43 @@ public class UpdateWarFile
{
}
}
System.exit(rc);
}
int processArgs(String[] args)
int processArgs(String[] argsOld)
{
File fileInstallDir = null;
int iOld;
int i;
String args[] = new String[argsOld.length];
int iNew;
log("Original arg count " + argsOld.length);
for (i = 0; i < argsOld.length; i++)
{
log("Arg " + i + " = " + argsOld[i] + "\r\n");
}
// Validate the number of parameters
if (args.length != 1)
if (args.length < 1)
{
return ERROR_INVALID_NUMBER_OF_PARAMS;
}
iNew = -1;
for (iOld = 0; iOld < argsOld.length; iOld++)
{
if (0 <= argsOld[iOld].indexOf("="))
{
iNew++;
args[iNew] = argsOld[iOld];
for (i = iOld + 1; i < argsOld.length && (-1 == argsOld[i].indexOf("=")); i++)
{
args[iNew] += " " + argsOld[i];
}
}
}
log("New arg count " + args.length);
for (i = 0; i < args.length; i++)
{
log("arg[" + i + "] = " + args[i]);
@ -388,7 +411,7 @@ public class UpdateWarFile
sMessage = "No error";
break;
case ERROR_INVALID_NUMBER_OF_PARAMS:
sMessage = "Invalid number of parameters: 4 expected";
sMessage = "Invalid number of parameters: 1make expected";
break;
default:
sMessage = "Unknown error: " + err;

View File

@ -75,6 +75,12 @@
}
"Entry"
{
"MsmKey" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4023D519AC024666B875F39FEE70302D"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@ -243,12 +249,6 @@
}
"Entry"
{
"MsmKey" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_D49BFC7330DD49F0BDE8F9C2EF409405"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@ -386,199 +386,199 @@
{
"CustomAction"
{
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_0649C6635880499891B6B5E745610A71"
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_0C4AE9D91D7D47208BF7E9E0CBB1710F"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - CasaAuthTokenSettingsEditor.bat)"
"Name" = "8:CommandLauncher.exe (InitConfigFile - startup.bat)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaAuthTokenSettingsEditor.bat output=[TARGETDIR]ats\\bin\\CasaAuthTokenSettingsEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:10"
"Identifier" = "8:_C9280ED9_FF85_41A1_A63F_1D5A4DE7F708"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_0D67D4E2DF614063A6E484DA7634504E"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (ServerKeystoreSetup)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" ServerKeystoreSetup installdir=[TARGETDIR] propertyfile=[PROPERTYFILE]"
"EntryPoint" = "8:"
"Sequence" = "3:1"
"Identifier" = "8:_95FF5D11_14EF_4F9B_8F58_CE64CB7D4B8C"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_1342D0740E9D4057A7A52F213A87522E"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - shutdown.bat)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\shutdown.bat output=[TARGETDIR]ats\\bin\\shutdown.bat"
"EntryPoint" = "8:"
"Sequence" = "3:8"
"Identifier" = "8:_D5A5CC5A_E7DE_4A66_8B8B_AC62B1F0E802"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_18232292AAE24AC8890F4EDC2C6CA303"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - svc.setting)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\svc.settings output=[TARGETDIR]ats\\etc\\svc\\svc.settings"
"EntryPoint" = "8:"
"Sequence" = "3:13"
"Identifier" = "8:_D0E0C7AD_FE1B_42BC_84CB_367FF7DA3462"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_29F602AEB0EE49038CF6F2FCCAB91D13"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (UpdateWarFile) Must occur after MungeCryptoPropertiesFilePath"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" UpdateWarFile ATS_INSTALL_DIR=[TARGETDIR]"
"EntryPoint" = "8:"
"Sequence" = "3:6"
"Identifier" = "8:_EE7DCFDC_5F7D_4CB5_A0CF_94F7FA99D5E3"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_4C26B01B6C7D45C1B87201E4021E5C34"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - CasaSvcSettingsEditor.bat)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaSvcSettingsEditor.bat output=[TARGETDIR]ats\\bin\\CasaSvcSettingsEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:12"
"Identifier" = "8:_0712449A_9964_46BE_B561_3D920BEB6858"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_86FFE7CBBCAE482B943C1345B8A19463"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - crypto.properties) Must occur prior to MungeCryptoPropertiesFilePath"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaAuthTokenSettingsEditor.bat output=[TARGETDIR]ats\\bin\\CasaAuthTokenSettingsEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:4"
"Identifier" = "8:_DCF56A01_EC29_4577_BF02_98B5C0530733"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_963A40E37B0B4C4D88DF53E8857DFC55"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - CasaIdenTokenSettingsEditor.bat)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaIdenTokenSettingsEditor.bat output=[TARGETDIR]ats\\bin\\CasaIdenTokenSettingsEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:11"
"Identifier" = "8:_3A733ACF_EEB9_4CB3_AC1F_1BE0D2754801"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_A8313CF92A734AF496D20732762B3AC8"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - CasaAuthPolicyEditor.bat)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaAuthPolicyEditor.bat output=[TARGETDIR]ats\\bin\\CasaAuthPolicyEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:9"
"Identifier" = "8:_A0F2A4A3_2CAF_4930_9CA7_394EBED23657"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_BA6223F1398F4FFDAAB8418B6CBA7254"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (SetupAsWindowsService)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" SetupAsWindowsService installdir=[TARGETDIR] propertyfile=[PROPERTYFILE]"
"EntryPoint" = "8:"
"Sequence" = "3:14"
"Identifier" = "8:_7A98817C_F65F_4FA3_86D5_1CA9941CB2ED"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_BC29F1229F604A44B70AC43EEE347C89"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (MungeCryptoPropertiesFilePath) Must occur after InitConfigFile for crypto.properties and prior to UpdateWarFile"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" MungeCryptoPropertiesFilePath input=[TARGETDIR]ats\\etc\\svc\\templates\\crypto.properties.munge output=[TARGETDIR]ats\\etc\\svc\\templates\\crypto.properties"
"EntryPoint" = "8:"
"Sequence" = "3:5"
"Identifier" = "8:_0DF5E5EA_0E59_4C5A_89E9_8E215C5B65EE"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_CF3F745785C74730B9C621D7CA4601BE"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (ClientKeystoreSetup)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" ClientKeystoreSetup installdir=[TARGETDIR] propertyfile=[PROPERTYFILE]"
"EntryPoint" = "8:"
"Sequence" = "3:2"
"Identifier" = "8:_23EDDD01_570B_4D80_BFE1_F1506C8BE5D3"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_E0F0B5DC44B644FEA323F054D95632EA"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - startup.bat)"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\startup.bat output=[TARGETDIR]ats\\bin\\startup.bat"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\startup.bat output=[TARGETDIR]ats\\bin\\startup.bat"
"EntryPoint" = "8:"
"Sequence" = "3:7"
"Identifier" = "8:_CA5EFB45_9474_4F04_93D5_67848CE9D58A"
"Identifier" = "8:_18F0776E_A735_4E77_B376_47F1F4F23F97"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_E7EF78190F31478F894EC953D6954F80"
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_4AB953C8E8AA4E44B7A3D2DDD163C040"
{
"Name" = "8:Primary Output from CommandLauncher (Active) (InitConfigFile - server.xml)"
"Name" = "8:CommandLauncher.exe (MungeCryptoPropertiesFilePath) Must occur after InitConfigFile for crypto.properties and prior to UpdateWarFile"
"Condition" = "8:"
"Object" = "8:_CABCFB3A84AF483B87164D02AE147ACE"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:\"[ATS_JAVA_EXE]\" -cp \"[TARGETDIR]ats\\bin\" InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] template=[TARGETDIR]ats\\etc\\svc\\templates\\server-sun.xml output=[TARGETDIR]ats\\catalinabase\\conf\\server.xml"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin MungeCryptoPropertiesFilePath input=[TARGETDIR]ats\\etc\\svc\\templates\\crypto.properties.munge output=[TARGETDIR]ats\\etc\\svc\\templates\\crypto.properties"
"EntryPoint" = "8:"
"Sequence" = "3:5"
"Identifier" = "8:_489F695D_617D_408B_A286_9096FF4C6030"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_529AA37D245B449F931A370D031F1328"
{
"Name" = "8:CommandLauncher.exe (InitConfigFile - server.xml)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] template=[TARGETDIR]ats\\etc\\svc\\templates\\server-sun.xml output=[TARGETDIR]ats\\catalinabase\\conf\\server.xml"
"EntryPoint" = "8:"
"Sequence" = "3:3"
"Identifier" = "8:_81520F3E_2A16_41C2_8617_0E2A7AE15DC3"
"Identifier" = "8:_55B66D91_2329_429C_883B_90948337E433"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_89821E71155946E687F31736E33F4DB7"
{
"Name" = "8:CommandLauncher.exe (ServerKeystoreSetup)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin ServerKeystoreSetup installdir=[TARGETDIR] propertyfile=[PROPERTYFILE]"
"EntryPoint" = "8:"
"Sequence" = "3:1"
"Identifier" = "8:_BD8E6CE6_3A8A_422F_92E2_AE38B360F1D9"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_A374DE89164249E0BDB101D9571CF8E9"
{
"Name" = "8:CommandLauncher.exe (InitConfigFile - CasaSvcSettingsEditor.bat)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaSvcSettingsEditor.bat output=[TARGETDIR]ats\\bin\\CasaSvcSettingsEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:12"
"Identifier" = "8:_2E92C5A6_F77B_4CDA_A4EB_7819264E6DA9"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_AE2874BFCE6B428B9B16A9C5556C632E"
{
"Name" = "8:CommandLauncher.exe (InitConfigFile - CasaAuthPolicyEditor.bat)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaAuthPolicyEditor.bat output=[TARGETDIR]ats\\bin\\CasaAuthPolicyEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:9"
"Identifier" = "8:_AC56AE2C_72B9_43DD_BEEF_7C3CD286D8AE"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_B0B10FA0B8764388BBD2E27EF9369BD1"
{
"Name" = "8:CommandLauncher.exe (InitConfigFile - shutdown.bat)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\shutdown.bat output=[TARGETDIR]ats\\bin\\shutdown.bat"
"EntryPoint" = "8:"
"Sequence" = "3:8"
"Identifier" = "8:_03320D51_6BDF_4F8C_B6C0_214BF474A4C7"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_B9B971E2D7DC41D1888E7896C4E29984"
{
"Name" = "8:CommandLauncher.exe (UpdateWarFile) Must occur after MungeCryptoPropertiesFilePath"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin UpdateWarFile ATS_INSTALL_DIR=[TARGETDIR]"
"EntryPoint" = "8:"
"Sequence" = "3:6"
"Identifier" = "8:_20F8E908_8BBA_40B5_B8AD_76B2F6C7A562"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_C085F74CD409462F8662188E243C3B3E"
{
"Name" = "8:CommandLauncher.exe (InitConfigFile - svc.setting)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\svc.settings output=[TARGETDIR]ats\\etc\\svc\\svc.settings"
"EntryPoint" = "8:"
"Sequence" = "3:13"
"Identifier" = "8:_276FE83B_55B4_4779_B844_1E46693FBDE3"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_CBD36E7C65454FAEAFAFBB089F552379"
{
"Name" = "8:CommandLauncher.exe (InitConfigFile - crypto.properties) Must occur prior to MungeCryptoPropertiesFilePath"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] template=[TARGETDIR]ats\\etc\\svc\\templates\\crypto.properties.template output=[TARGETDIR]ats\\etc\\svc\\templates\\crypto.properties.munge"
"EntryPoint" = "8:"
"Sequence" = "3:4"
"Identifier" = "8:_52B37947_0117_4E54_A3CE_CE1092EF5AFF"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_D79DF1FB77624071BF5551DB76E3FC15"
{
"Name" = "8:CommandLauncher.exe (InitConfigFile - CasaIdenTokenSettingsEditor.bat)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaIdenTokenSettingsEditor.bat output=[TARGETDIR]ats\\bin\\CasaIdenTokenSettingsEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:11"
"Identifier" = "8:_FD7621D3_DCE1_4D53_855E_7F3A809067BB"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_E127B13AEB1E4F6ABFDE9FF0E6309065"
{
"Name" = "8:CommandLauncher.exe (ClientKeystoreSetup)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin ClientKeystoreSetup installdir=[TARGETDIR] propertyfile=[PROPERTYFILE]"
"EntryPoint" = "8:"
"Sequence" = "3:2"
"Identifier" = "8:_26CA921F_983F_4174_9FBE_0CA0D335BF56"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_F866EA13E789416D8C4A00BF1AF426BB"
{
"Name" = "8:CommandLauncher.exe (InitConfigFile - CasaAuthTokenSettingsEditor.bat)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin InitConfigFile ATS_INSTALL_DIR=[TARGETDIR] propertyfile=[PROPERTYFILE] template=[TARGETDIR]ats\\etc\\svc\\templates\\CasaAuthTokenSettingsEditor.bat output=[TARGETDIR]ats\\bin\\CasaAuthTokenSettingsEditor.bat"
"EntryPoint" = "8:"
"Sequence" = "3:10"
"Identifier" = "8:_91DE6CAB_D3AF_4332_B355_F25852979834"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
"{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_FDB694C476A043499BB15516B7E7C6B2"
{
"Name" = "8:CommandLauncher.exe (SetupAsWindowsService)"
"Condition" = "8:"
"Object" = "8:_32E2D317FBCD4B25904D5402E547B8A8"
"FileType" = "3:2"
"InstallAction" = "3:1"
"Arguments" = "8:[ATS_JAVA_EXE] -cp [TARGETDIR]ats\\bin SetupAsWindowsService installdir=[TARGETDIR] propertyfile=[PROPERTYFILE]"
"EntryPoint" = "8:"
"Sequence" = "3:14"
"Identifier" = "8:_61CF50D6_CFBF_4737_A055_8FE995A2D184"
"InstallerClass" = "11:FALSE"
"CustomActionData" = "8:"
}
@ -593,14 +593,6 @@
{
"LaunchCondition"
{
"{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_BA7D09B79B98484EA57C0B200985420C"
{
"Name" = "8:.NET Framework"
"Message" = "8:[VSDNETMSG]"
"Version" = "8:2.0.50727"
"AllowLaterVersions" = "11:FALSE"
"InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=9832"
}
}
}
"File"
@ -805,6 +797,26 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_32E2D317FBCD4B25904D5402E547B8A8"
{
"SourcePath" = "8:..\\CommandLauncher\\bin\\CommandLauncher.exe"
"TargetName" = "8:CommandLauncher.exe"
"Tag" = "8:"
"Folder" = "8:_62B357DC6D484761A18291FA3525320C"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4023D519AC024666B875F39FEE70302D"
{
"SourcePath" = "8:..\\..\\..\\Svc\\tomcat5\\conf\\windows\\server-sun.xml"
@ -1901,13 +1913,6 @@
}
"LaunchCondition"
{
"{836E08B8-0285-4809-BA42-01DB6754A45D}:_8AEFF1A6376B4319B6A6D2DDC9A2E067"
{
"Name" = "8:Visual J# .NET"
"Condition" = "8:REQ_VJSLIB_VER_PRESENT = \"TRUE\""
"Message" = "8:[VSDVJSMSG]"
"InstallUrl" = "8:http://msdn.microsoft.com/vjsharp"
}
}
"Locator"
{
@ -1919,9 +1924,9 @@
"Product"
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:server-java_msi"
"ProductName" = "8:CasaAuthTokenSvc"
"ProductCode" = "8:{A8C0CB21-B404-4B79-B076-ECA9AB23D80A}"
"PackageCode" = "8:{C55D4877-9F39-49A6-9BA9-3ABFF15B61E7}"
"PackageCode" = "8:{B0D90017-E0E4-4DAD-807A-F40C90AC5172}"
"UpgradeCode" = "8:{DCF8EE94-B530-4C96-9C74-CEA1A54769AF}"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:FALSE"
@ -1931,7 +1936,7 @@
"Manufacturer" = "8:Novell"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"
"Title" = "8:server-java_msi"
"Title" = "8:CasaAuthTokenSvc"
"Subject" = "8:"
"ARPCONTACT" = "8:Novell"
"Keywords" = "8:"
@ -2439,40 +2444,9 @@
}
"ProjectOutput"
{
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_CABCFB3A84AF483B87164D02AE147ACE"
{
"SourcePath" = "8:..\\CommandLauncher\\bin\\CommandLauncher.exe"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_62B357DC6D484761A18291FA3525320C"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
"ProjectOutputGroupRegister" = "3:1"
"OutputConfiguration" = "8:"
"OutputGroupCanonicalName" = "8:Built"
"OutputProjectGuid" = "8:{B52EF84A-D745-4637-9F59-DBD6E21C179C}"
"ShowKeyOutput" = "11:TRUE"
"ExcludeFilters"
{
}
}
}
"VJSharpPlugin"
{
"{9AEDD1B1-1EB5-4D12-B9BF-B1D3825A492E}:_8AEFF1A6376B4319B6A6D2DDC9A2E067"
{
}
}
}
}