msi: Also set the SOURCEDIR property in MSI_InstallPackage
James Hawkins
truiken at gmail.com
Fri Oct 13 16:08:52 CDT 2006
Hi,
This fixes the bug with the Adobe installers where you would always
have to enter the trial serial.
Changelog:
* Also set the SOURCEDIR property in MSI_InstallPackage.
dlls/msi/action.c | 4 +++
dlls/msi/tests/install.c | 57 +++++++++++++++++++++++++++++++---------------
2 files changed, 43 insertions(+), 18 deletions(-)
--
James Hawkins
-------------- next part --------------
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index a7db050..4bf505c 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -592,6 +592,10 @@ UINT MSI_InstallPackage( MSIPACKAGE *pac
if (!check)
MSI_SetPropertyW(package, cszSourceDir, path);
+ check = msi_dup_property( package, cszSOURCEDIR );
+ if (!check)
+ MSI_SetPropertyW(package, cszSOURCEDIR, path);
+
package->PackagePath = path;
msi_free(check);
diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index 223ac41..06805e3 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -71,7 +71,8 @@ static const CHAR component_dat[] = "Com
"One\t{783B242E-E185-4A56-AF86-C09815EC053C}\tMSITESTDIR\t2\t\tone.txt\n"
"Three\t{010B6ADD-B27D-4EDD-9B3D-34C4F7D61684}\tCHANGEDDIR\t2\t\tthree.txt\n"
"Two\t{BF03D1A6-20DA-4A65-82F3-6CAC995915CE}\tFIRSTDIR\t2\t\ttwo.txt\n"
- "dangler\t{6091DF25-EF96-45F1-B8E9-A9B1420C7A3C}\tTARGETDIR\t4\t\tregdata";
+ "dangler\t{6091DF25-EF96-45F1-B8E9-A9B1420C7A3C}\tTARGETDIR\t4\t\tregdata\n"
+ "component\t\tTARGETDIR\t0\t1\tfile";
static const CHAR directory_dat[] = "Directory\tDirectory_Parent\tDefaultDir\n"
"s72\tS72\tl255\n"
@@ -91,7 +92,8 @@ static const CHAR feature_dat[] = "Featu
"Four\t\tFour\tThe Four Feature\t4\t3\tCABOUTDIR\t0\n"
"One\t\tOne\tThe One Feature\t1\t3\tMSITESTDIR\t0\n"
"Three\t\tThree\tThe Three Feature\t3\t3\tCHANGEDDIR\t0\n"
- "Two\t\tTwo\tThe Two Feature\t2\t3\tFIRSTDIR\t0";
+ "Two\t\tTwo\tThe Two Feature\t2\t3\tFIRSTDIR\t0\n"
+ "feature\t\t\t\t2\t1\tTARGETDIR\t0";
static const CHAR feature_comp_dat[] = "Feature_\tComponent_\n"
"s38\ts72\n"
@@ -100,7 +102,8 @@ static const CHAR feature_comp_dat[] = "
"Four\tFour\n"
"One\tOne\n"
"Three\tThree\n"
- "Two\tTwo";
+ "Two\tTwo\n"
+ "feature\tcomponent";
static const CHAR file_dat[] = "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
"s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
@@ -109,7 +112,8 @@ static const CHAR file_dat[] = "File\tCo
"four.txt\tFour\tfour.txt\t1000\t\t\t16384\t4\n"
"one.txt\tOne\tone.txt\t1000\t\t\t0\t1\n"
"three.txt\tThree\tthree.txt\t1000\t\t\t0\t3\n"
- "two.txt\tTwo\ttwo.txt\t1000\t\t\t0\t2";
+ "two.txt\tTwo\ttwo.txt\t1000\t\t\t0\t2\n"
+ "file\tcomponent\tfilename\t100\t\t\t8192\t1";
static const CHAR install_exec_seq_dat[] = "Action\tCondition\tSequence\n"
"s72\tS255\tI2\n"
@@ -123,7 +127,7 @@ static const CHAR install_exec_seq_dat[]
"InstallInitialize\t\t1500\n"
"InstallValidate\t\t1400\n"
"LaunchConditions\t\t100\n"
- "WriteRegistryValues\t\t5000";
+ "WriteRegistryValues\tSourceDir And SOURCEDIR\t5000";
static const CHAR media_dat[] = "DiskId\tLastSequence\tDiskPrompt\tCabinet\tVolumeLabel\tSource\n"
"i2\ti4\tL64\tS255\tS32\tS72\n"
@@ -153,7 +157,8 @@ static const CHAR registry_dat[] = "Regi
"Registry\tRegistry\n"
"Apples\t2\tSOFTWARE\\Wine\\msitest\tName\timaname\tOne\n"
"Oranges\t2\tSOFTWARE\\Wine\\msitest\tnumber\t#314\tTwo\n"
- "regdata\t2\tSOFTWARE\\Wine\\msitest\tblah\tbad\tdangler";
+ "regdata\t2\tSOFTWARE\\Wine\\msitest\tblah\tbad\tdangler\n"
+ "OrderTest\t2\tSOFTWARE\\Wine\\msitest\tOrderTestName\tOrderTestValue\tcomponent";
typedef struct _msi_table
{
@@ -473,14 +478,6 @@ static void create_file(const CHAR *name
static void create_test_files(void)
{
- int len;
-
- GetCurrentDirectoryA(MAX_PATH, CURR_DIR);
- len = lstrlenA(CURR_DIR);
-
- if(len && (CURR_DIR[len-1] == '\\'))
- CURR_DIR[len - 1] = 0;
-
get_program_files_dir(PROG_FILES_DIR);
CreateDirectoryA("msitest", NULL);
@@ -494,6 +491,8 @@ static void create_test_files(void)
create_file("five.txt");
create_cab_file("msitest.cab");
+ create_file("filename");
+
DeleteFileA("four.txt");
DeleteFileA("five.txt");
}
@@ -514,6 +513,7 @@ static BOOL delete_pf(const CHAR *rel_pa
static void delete_test_files(void)
{
+ DeleteFileA("filename");
DeleteFileA("msitest.msi");
DeleteFileA("msitest.cab");
DeleteFileA("msitest\\second\\three.txt");
@@ -601,6 +601,9 @@ static void test_MsiInstallProduct(void)
HKEY hkey;
DWORD num, size, type;
+ create_test_files();
+ create_database(msifile, tables, sizeof(tables) / sizeof(msi_table));
+
r = MsiInstallProductA(msifile, NULL);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
@@ -641,7 +644,16 @@ static void test_MsiInstallProduct(void)
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
ok(num == 314, "Expected 314, got %d\n", num);
+ size = MAX_PATH;
+ type = REG_SZ;
+ res = RegQueryValueExA(hkey, "OrderTestName", NULL, &type, (LPBYTE)path, &size);
+ ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+ ok(!lstrcmpA(path, "OrderTestValue"), "Expected imaname, got %s\n", path);
+
+
RegDeleteKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Wine\\msitest");
+
+ delete_test_files();
}
static void test_MsiSetComponentState(void)
@@ -650,6 +662,8 @@ static void test_MsiSetComponentState(vo
char path[MAX_PATH];
UINT r;
+ create_database(msifile, tables, sizeof(tables) / sizeof(msi_table));
+
CoInitialize(NULL);
lstrcpy(path, CURR_DIR);
@@ -673,6 +687,8 @@ static void test_MsiSetComponentState(vo
MsiCloseHandle(package);
CoUninitialize();
+
+ DeleteFileA(msifile);
}
static void test_packagecoltypes(void)
@@ -682,6 +698,8 @@ static void test_packagecoltypes(void)
LPCSTR query;
UINT r, count;
+ create_database(msifile, tables, sizeof(tables) / sizeof(msi_table));
+
CoInitialize(NULL);
lstrcpy(path, CURR_DIR);
@@ -729,15 +747,18 @@ static void test_packagecoltypes(void)
START_TEST(install)
{
+ DWORD len;
+
if (!init_function_pointers())
return;
- create_test_files();
- create_database(msifile, tables, sizeof(tables) / sizeof(msi_table));
+ GetCurrentDirectoryA(MAX_PATH, CURR_DIR);
+ len = lstrlenA(CURR_DIR);
+
+ if(len && (CURR_DIR[len-1] == '\\'))
+ CURR_DIR[len - 1] = 0;
test_MsiInstallProduct();
test_MsiSetComponentState();
test_packagecoltypes();
-
- delete_test_files();
}
--
1.4.2.1
More information about the wine-patches
mailing list