Implement MsiGetShortcutTargetA.
diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index ef81cf1..6a6ca06 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -1740,15 +1740,33 @@
LPSTR szProductCode, LPSTR szFeatureId,
LPSTR szComponentCode )
{
- FIXME("\n");
- return ERROR_CALL_NOT_IMPLEMENTED;
+ LPWSTR target;
+ const int len = MAX_FEATURE_CHARS+1;
+ WCHAR product[MAX_FEATURE_CHARS+1], feature[MAX_FEATURE_CHARS+1], component[MAX_FEATURE_CHARS+1];
+ UINT r;
+
+ target = strdupAtoW( szShortcutTarget );
+ if (szShortcutTarget && !target )
+ return ERROR_OUTOFMEMORY;
+ product[0] = 0;
+ feature[0] = 0;
+ component[0] = 0;
+ r = MsiGetShortcutTargetW( target, product, feature, component );
+ msi_free( target );
+ if (r == ERROR_SUCCESS)
+ {
+ WideCharToMultiByte( CP_ACP, 0, product, -1, szProductCode, len, NULL, NULL );
+ WideCharToMultiByte( CP_ACP, 0, feature, -1, szFeatureId, len, NULL, NULL );
+ WideCharToMultiByte( CP_ACP, 0, component, -1, szComponentCode, len, NULL, NULL );
+ }
+ return r;
}
UINT WINAPI MsiGetShortcutTargetW( LPCWSTR szShortcutTarget,
LPWSTR szProductCode, LPWSTR szFeatureId,
LPWSTR szComponentCode )
{
- FIXME("\n");
+ FIXME("%s\n", debugstr_w(szShortcutTarget));
return ERROR_CALL_NOT_IMPLEMENTED;
}