-
-
Notifications
You must be signed in to change notification settings - Fork 153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incomplete and duplicated DLLs #187
Comments
Waiting on activescott/lessmsi#187 todo: Reverse engineer service with sc.exe/Registry Deduplicate and symlink shared DLLs between MDS and AAS
@brian6932 I suspect this is because there are two of these files in that msi. After extracting them I ran the following commands to see the files: C:\Users\scott\Downloads>dir /s AppleMobileDeviceSupport64\SourceDir | findstr libcache.dll
11/08/2023 04:37 PM 37,688 libcache.dll
11/08/2023 04:31 PM 45,880 libcache.dll.duplicate1
That You can also open that msi up in the GUI and do a Ctrl+F fr libcache.dll and you'll see both of them there too: I'm closing this issue with the assumption that gets you straightened out, but if not, feel free to re-open or open another issue. |
You're right about the duplicates being the right sizes, but msiexec doesn't do this. I'd wager there's some way you can tell which dll is for which platform, or some flag should be added to choose the largest duplicate, storing a bunch of sizes in a table isn't a modular approach to this, and it doesn't make a ton of sense to extract 2x the data I actually need. |
Well I don't think those bits are being mangled, but I suspect there is some heuristic that could be used to fix the paths. When I was looking at this yesterday I noticed they were linked to two different install directories with a I suppose we could implement some logic in lessmsi to detect at least those root-level duplicate directory names (root level == Would that meet your needs? P.S. Some of this is a bit of a note to myself :) |
Yea SGTM |
Hello @activescott @brian6932 I found a way to differentiate between 32 bit and 64 bit dll files, regardless of their name or file path. @brian6932 what would be the best outcome for you? Would you like LessMSI CLI to extract only the files relevant to your system? Or would you like to preserve the ability to extract all the files using a designated flag? Thank you. |
Imo, yes when a duplicate filename exists as the default behavior, but there should be flags to alter it, and maybe one to ignore altogether (e.g. |
Great, what is the way to differentiate? Will it work with all msi's? Agree with the flag. What if someone wants both versions? Would they do the extraction twice (which is probably fine)? |
@activescott, using the PEHeader Magic property I can easily check if a PE file (dll, exe and so on) is 32 or 64 bit. IMO
And so on for the 32 bit. |
Sounds good. Let's try it! |
@activescott Can you please assign this ticket to me? I think this ticket and the overwrite ticket are related and can be solved together by one update. |
Assigned to you. I was thinking that it is possible the original issue that I described above will still need solved in addition to doing the architecture flag - as some files might turn out to be duplicates that are not DLLs. I'm not positive that would happen but it seems plausible. |
Describe the bug
https://i.alienpls.org/AppleMobileDeviceSupport64.msi
The following DLLs are required, for the service to run (these are the expected sizes, from an msi install)
Out of those, from just looking at byte lengths, (these are broken, extracted by lessmsi)
To Reproduce
Expected behavior
Should work.
Desktop:
The text was updated successfully, but these errors were encountered: