Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
b7fe5e0a
Commit
b7fe5e0a
authored
Nov 13, 2008
by
Vincent Povirk
Committed by
Alexandre Julliard
Nov 24, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
setupapi: Implement FLG_PROFITEM_GROUP.
parent
27335726
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
7 deletions
+28
-7
install.c
dlls/setupapi/install.c
+16
-6
install.c
dlls/setupapi/tests/install.c
+7
-1
setupapi.h
include/setupapi.h
+5
-0
No files found.
dlls/setupapi/install.c
View file @
b7fe5e0a
...
...
@@ -787,9 +787,6 @@ static BOOL profile_items_callback( HINF hinf, PCWSTR field, void *arg )
LPWSTR
cmdline
=
NULL
,
lnkpath_end
;
unsigned
int
name_size
;
INFCONTEXT
name_context
,
context
;
IShellLinkW
*
shelllink
=
NULL
;
IPersistFile
*
persistfile
=
NULL
;
HRESULT
initresult
=
E_FAIL
;
int
attrs
=
0
;
static
const
WCHAR
dotlnk
[]
=
{
'.'
,
'l'
,
'n'
,
'k'
,
0
};
...
...
@@ -799,7 +796,7 @@ static BOOL profile_items_callback( HINF hinf, PCWSTR field, void *arg )
if
(
SetupFindFirstLineW
(
hinf
,
field
,
Name
,
&
name_context
))
{
SetupGetIntField
(
&
name_context
,
2
,
&
attrs
);
if
(
attrs
)
FIXME
(
"unhandled attributes: %x
\n
"
,
attrs
);
if
(
attrs
&
~
FLG_PROFITEM_GROUP
)
FIXME
(
"unhandled attributes: %x
\n
"
,
attrs
);
}
else
return
TRUE
;
...
...
@@ -808,7 +805,7 @@ static BOOL profile_items_callback( HINF hinf, PCWSTR field, void *arg )
lnkpath_end
=
lnkpath
+
strlenW
(
lnkpath
);
if
(
lnkpath_end
[
-
1
]
!=
'\\'
)
*
lnkpath_end
++
=
'\\'
;
if
(
SetupFindFirstLineW
(
hinf
,
field
,
SubDir
,
&
context
))
if
(
!
(
attrs
&
FLG_PROFITEM_GROUP
)
&&
SetupFindFirstLineW
(
hinf
,
field
,
SubDir
,
&
context
))
{
unsigned
int
subdir_size
;
...
...
@@ -823,6 +820,17 @@ static BOOL profile_items_callback( HINF hinf, PCWSTR field, void *arg )
return
TRUE
;
lnkpath_end
+=
name_size
-
1
;
if
(
attrs
&
FLG_PROFITEM_GROUP
)
{
SHPathPrepareForWriteW
(
NULL
,
NULL
,
lnkpath
,
SHPPFW_DIRCREATE
);
}
else
{
IShellLinkW
*
shelllink
=
NULL
;
IPersistFile
*
persistfile
=
NULL
;
HRESULT
initresult
=
E_FAIL
;
if
(
lnkpath
+
MAX_PATH
<
lnkpath_end
+
5
)
return
TRUE
;
strcpyW
(
lnkpath_end
,
dotlnk
);
...
...
@@ -881,9 +889,11 @@ static BOOL profile_items_callback( HINF hinf, PCWSTR field, void *arg )
}
IShellLinkW_Release
(
shelllink
);
done:
done:
if
(
SUCCEEDED
(
initresult
))
CoUninitialize
();
HeapFree
(
GetProcessHeap
(),
0
,
cmdline
);
}
return
TRUE
;
}
...
...
dlls/setupapi/tests/install.c
View file @
b7fe5e0a
...
...
@@ -393,7 +393,7 @@ static void test_profile_items(void)
"[Version]
\n
"
"Signature=
\"
$Chicago$
\"\n
"
"[DefaultInstall]
\n
"
"ProfileItems=TestItem,TestItem2
\n
"
"ProfileItems=TestItem,TestItem2
,TestGroup
\n
"
"[TestItem]
\n
"
"Name=TestItem
\n
"
"CmdLine=11,,notepad.exe
\n
"
...
...
@@ -401,6 +401,8 @@ static void test_profile_items(void)
"Name=TestItem2
\n
"
"CmdLine=11,,notepad.exe
\n
"
"SubDir=TestDir
\n
"
"[TestGroup]
\n
"
"Name=TestGroup,4
\n
"
;
hShell32
=
LoadLibraryA
(
"shell32"
);
...
...
@@ -432,6 +434,8 @@ static void test_profile_items(void)
ok
(
INVALID_FILE_ATTRIBUTES
!=
GetFileAttributes
(
path
),
"directory not created
\n
"
);
snprintf
(
path
,
MAX_PATH
,
"%s
\\
TestDir
\\
TestItem2.lnk"
,
commonprogs
);
ok
(
INVALID_FILE_ATTRIBUTES
!=
GetFileAttributes
(
path
),
"link not created
\n
"
);
snprintf
(
path
,
MAX_PATH
,
"%s
\\
TestGroup"
,
commonprogs
);
ok
(
INVALID_FILE_ATTRIBUTES
!=
GetFileAttributes
(
path
),
"group not created
\n
"
);
}
snprintf
(
path
,
MAX_PATH
,
"%s
\\
TestItem.lnk"
,
commonprogs
);
...
...
@@ -442,6 +446,8 @@ static void test_profile_items(void)
DeleteFile
(
path
);
snprintf
(
path
,
MAX_PATH
,
"%s
\\
TestDir"
,
commonprogs
);
RemoveDirectory
(
path
);
snprintf
(
path
,
MAX_PATH
,
"%s
\\
TestGroup"
,
commonprogs
);
RemoveDirectory
(
path
);
cleanup:
if
(
hShell32
)
FreeLibrary
(
hShell32
);
...
...
include/setupapi.h
View file @
b7fe5e0a
...
...
@@ -1054,6 +1054,11 @@ DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_INF_SIGNER_INFO)
#define FLG_REGSVR_DLLREGISTER 0x00000001
#define FLG_REGSVR_DLLINSTALL 0x00000002
#define FLG_PROFITEM_CURRENTUSER 0x00000001
#define FLG_PROFITEM_DELETE 0x00000002
#define FLG_PROFITEM_GROUP 0x00000004
#define FLG_PROFITEM_CSIDL 0x00000008
#define DI_NOVCP 0x00000008
/* Class installer function codes */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment