Jump to content

YumeYao

Member
  • Posts

    73
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    China

Everything posted by YumeYao

  1. I just built a self-made version for my need yesterday and I encountered this bug so I just fixed it. It's really dangerous because people who want to turn it off will and doesn't test it will have the wrong sfx then wrong exe. BTW, I have several suggestions( some already done by me locally) to you: Dialog Version I see you're actually telling dialog version apart from non-dialog version by looking for the dialog resources, in other words, the code is same. I think you may want to let user manually add dialogs to versions other than LZMA, but this is not documented. Anyway, in my self-made version, I modified the code to fully disable dialogs, reducing the sfx by 1.5KB. Russian Not to be offensive, but I don't think it's good to add them in the code, or we may need a macro to turn it off. The strings takes too much spaces. Also, you may think save langstrs.cpp as UTF-8, so that users using other languages can compile it without modifications. RTF support on non-dialog versions Well, I tried adding it but failed. But I have some solutions that may work: Getting the Width: 1. Set RTF Control to max width(as the window allows) 2. Get line count. (EM_GETLINECOUNT) 3. Set RTF Control to (it's previous width)/2 4. Get line count, if equals to previous, goto 3, otherwise goto 5 5. Set RTF Control to (it's previous width)-10 6. Get line count, if equals to previous, goto 5, otherwise goto 7 7. Set RTF Control to (it's previous width)-1 8. Get line count, if equals to previous, goto 7, otherwise goto 9 9. Done. Previous width(=current width + 1) is what we need. Getting the height: 1. Get the text 2. Add "\par " to the end. (There must be 2 spaces, first space is omitted because it follows a \par.) 3. Set the text. 4. Get line count. (EM_GETLINECOUNT) 5. Get line index of last line(last return value -1). (EM_LINEINDEX) This index is the white space we just added. 6. Get the position of the white space (EM_POSFROMCHAR), the y-offset is the height. 7. Restore the text to before to not make user confusing(using arrow keys can move the cursor to the invisible white space).
  2. Get WinDDK 2003 SP1 and use the CRT headers from it and lib (msvcrt.lib) from it. Additionally, if you have VC6, you can use the lib from it. (But the CRT header should be from DDK 2003 SP1 or Win7 DDK for bug-free).
  3. BUG on macro _SFX_USE_LANG. (Version 141_2100) main.cpp AString strSignatureBegin; AString strSignatureEnd; #ifdef _SFX_USE_LANG CreateLanguageSignature( idSfxLang, strSignatureBegin, strSignatureEnd ); #endif // _SFX_USE_LANG if( ReadConfig( inStream, strSignatureBegin, strSignatureEnd, config ) == false ) /* DANGER!!!! arg2 and arg3 not inited!!!! */ { /* BUG!!!!! NEVER REACH HERE!!! Because ReadConfig Easily Find the Signature of NULL and consider it have found the signature. */ if( ReadConfig( inStream, kSignatureConfigStart, kSignatureConfigEnd, config ) == false ) { SfxErrorDialog( FALSE, ERR_READ_CONFIG ); return ERRC_READ_CONFIG; } } This code will leave strSignatureBegin and strSignatureEnd not initialized and therefore the sfx doesn't work. The fix I'm using: #ifdef _SFX_USE_LANG AString strSignatureBegin; AString strSignatureEnd; CreateLanguageSignature( idSfxLang, strSignatureBegin, strSignatureEnd ); if( ReadConfig( inStream, strSignatureBegin, strSignatureEnd, config ) == false ) // if fall through #endif // _SFX_USE_LANG if( ReadConfig( inStream, kSignatureConfigStart, kSignatureConfigEnd, config ) == false ) { SfxErrorDialog( FALSE, ERR_READ_CONFIG ); return ERRC_READ_CONFIG; }
  4. Making the script is another thing, for example, I have to make seperate .mst's for each language pack, rather than a generic tutorial(same steps). Maybe I could give it a simple edit to support slipstreaming latest updates. Also there are many limits with the cmd command. I have added a lot of features in my pack, as you can see: 1. updates are listed out in ARP. This requires: the msp, the vbscript, then the mst. msp can't be made by cmd easily(or accurately the pcp, patch creation property), neither can the mst. 2. updated files. Should I include the updated files in the pack(if I could ever update SNMsynth with full functionality), or should I suggest downloading them? The original packages are probablly up to 1GB. 3. use external tree instead of admin external The other features may be added by the means of cmd and mst, i guess. In total, I find that a tutorial is much easier(for me to write) and help experienced and knowledged people understand the msi package and the .NET package narrowly.
  5. Yes that's correct. But the blocking of KB974417 is still essential. Don't worry it's done by SNMsynth
  6. Removing __CxxFrameHandler3(MSVCRT.DLL) dependency on x64: This entry point is available in MSVCRT.DLL of Windows7 x64/Windows Srv 2008 R2, but unfortunately, it's missing in MSVCRT.DLL of Windows XP/2003 x64. After searching, I found this post: http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesnative/thread/7099bc65-6d13-4651-aef2-cdb1d8bc78d7 One reply suggests: extern "C" void *__CxxFrameHandler; extern "C" void __declspec(naked) __CxxFrameHandler3(void) { // Jump indirect: Jumps to __CxxFrameHandler _asm jmp __CxxFrameHandler ; Trampoline bounce }It's good enough on x86, I suppose you may consider using that in your Exceptions.cpp, replacing your extern "C" void __CxxFrameHandler3. Yet x64 compiler doesn't support _asm and the keyword "naked". So you have to use the bloated C code on x64: extern "C" void *__CxxFrameHandler( PEXCEPTION_RECORD rec, void * frame, PCONTEXT context, void ** dispatch ); extern "C" void __CxxFrameHandler3( PEXCEPTION_RECORD rec, void * frame, PCONTEXT context, void ** dispatch ) { __CxxFrameHandler( rec, frame, context, dispatch ); } I have tested it and it passed the linking with an old MSVCRT.LIB. You could look at this and try making some exceptions while executing/debugging, to see whether this works, and consider using it in your next version. -EDIT- Added a screenshot:
  7. @geromichi & strel, I'll probably use uiautomationcore.dll and .mui from Vista(WinSrv2008)-KB971513. Why I don't that file from XP is because it breaks it's multi-lingual support, coming with built-in language resources. But I havn't done tests yet. @strel, in my test of SNMsynth, KB958484 doesn't have its files updated in .NET 3.5(files are still with build number 1), but entries are present in vs_setup.msi. I think you may applies *.msp earlier than NET35SLIMDOWN.mst. there are still other improvements that could be made, I'm not at home so I'll write later.
  8. Thanks strel, I'll check it. BTW, you missed the title: it should be 20091029, not 20090929. EDIT: OMG, so many *.mst's, I know it must be hard work. thanks again.
  9. @moons: you can use my chinese installer (link or sp3only), extract it and replace language packs with yours, then repack it. Only that SNM won't slim down 3.5 LNG pack for you, if you need it and don't understand how to do it yourself, leave a post here, I'll help you with it. @strel: can you introduce to us what the progress is for next release. I know I have written too much on it.
  10. back from tests. Removing those components can reduce the final 7-zip size by 0.8MiB around, and doesn't harm on xp/2k3 at all.
  11. I see. You don't apply KB951847 fix to windows 2000 in the SNM script....
  12. some new thoughts after I did a test on windows 2000: 1. There are some files in .NET 2.0 only needed by windows 2000, if we could remove them then the size would be smaller for XP/2k3. I decide to remove all components with condition NOT (VersionNT > 500) yet i haven't done a test yet. I'll let you know the result. EDIT: .NET 1.1 also has such files. but I don't intend to install .NET 1.1 any longer. 2. Is it possible to create a generic mst that removes components such as KBxxxxxx.ARP.NoRemove & KBxxxxxx.ARP.Add? They cause the issue that 2000/XP SP0/XP SP1/2k3 SP0 shows KBxxxxxx for .NET entries on ARP. I decide to manually move them in my release, however. 3. For 2000, KB951847 fix is not needed. KB971111 doesn't require a fix too(WU checks gdiplus.dll version). The only need is KB974417 fix (plus language pack fix for 2.0). Therefore I'm going to make a new mst for .net 2.0 to avoid useless registry entries on windows 2000.
  13. I guess strel is busy IRL. If needed I can help update his script.
  14. yes, it's ok as far as it's added at any time after .NET installation.
  15. you can save it as *.reg, and merge it into your registry.
  16. sorry for late replying, I am a little busy these days. What strel said is not correct on the new KB974417, we still need a reg fix if we pre-apply msp to the install package. It's totally similar as how we block KB95848x.(KB951847). The key is: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\DC3BF90CC0D3D2F398A9A6D1762F70F3\Patches\9E0DE89293FE9BB33898F24ED18CCF08" Add this key, then a dword value "State"=0x1 under it. the key name in "patches" can be calculated like this: This is also a generic way to convert a GUID to plain text. best regards.
  17. @strel on the WIC issue: its update.inf doesn't contain any entry calling spupdsvc.exe. This is also the first time i see such a hotfix with spupdsvc.exe yet doesn't call it. here is also a simple test to prove it. environment is xp sp2 chs. wictest.7z @dumpydooby I always do a test on perfectly clean system before I confirm all is working.
  18. good info. Then it seems: DW fix is not needed for we removed office debugger. SSIP fix is (possibly) not needed for VC8 assemblies are initialized during txt-setup mode(if proper addon is integrated). I'm not sure and I havn't done any test for this.
  19. I see your post at strel's SNMsynth, did you use his script to install all the stuffs? so can you try without his script? because I can't find any thing wrong in your vs_setup.msi excpet for ARPSYSCOMPONENT. EDIT: sorry I got it wrong. well, you applied his NETWUFIX.mst, then you HAVE TO use his script otherwise it'll be not uninstallable.
  20. 1. yes. My first method(branches) will bring a result that proper catalog is not installed on xp. My second method is a fault because it won't installs on xp sp3(I was working on xp sp2 those days so....). Now I uses a modified inf and a patched update.exe for my release. If you don't want to use the patched one, you can apply my second method on KB971276-XP-V3(I didn't test that on 2k3 but I suppose it works). If that doesn't work, then using KB971276-XP and KB971276-2003 seperately is the safest way. Still, I mean replace all update shells with the one in original XPS printer because those in XPS printer are latest. I'll test about the .msi cache names. I didn't notice what you said "original installers always use same file names for cached installers". If that's true, then I'll agree with you. EDIT2: tested and here's a screenshot: what you said does not happened. so you can take a look at my msts and vbses, they will handle this issue properly. On a live system it's always safe to execute spupdsvc.exe(consider how user installs hotfixes). Only on a system-setup-in-progress OS, it may damage. So I determinate it with SSIP. RunOnceEx is also ok. WIC won't execute spupdsvc.exe, that's why I doesn't make it RunOnce-delayed. good luck. EDIT: forgot to say. look at this: http://catalog.update.microsoft.com/v7/sit...aspx?q=KB951847 This 69.2 MB stuff is not same as the one in download.microsoft.com, if you can make your script compatible for this one, that will be good. sorry, I can't see the reason why your install fails. All I use is also code's addon.
  21. ok.... simply you missed step 7 in my tutorial.. 7. go to Property table, remove 2 entries: INSTALLLEVEL and ARPSYSTEMCOMPONENT.
  22. I finally worked out the whole thing as I wanted. Tested on VM and worked fine. Here are my final decisions to share: for KB971276, I finally think it's safe to use original one.(WindowsXP-KB971276-v3-x86-ENU.exe for XP, WindowsServer2003-KB971276-v2-x86-ENU.exe for 2k3). But the hotfix update shell replacement is harmless and can be applied to reduce size. on msi: CA_BlockDirectInstall* in CustomAction and InstallExecuteSequence prevents msi from direct install. Removing them ensures the msi can be installed without "ADDEPLOY=1". .NET 2.0 specific: DWFolder.D0DF3458_A845_11D3_8D0A_0050046416B9 and needed parents should NOT be removed in Directory, it's needed by debugger registry(DW20.exe). on mst: my final working set is here. workingmsts.zip on install.cmd: modifiedinstallcmd.7z EDIT: I have changed some paths.. be careful. as far as i can see, I didn't restore the path for XPS_LanguagePack in the document. EDIT2: @Raul90 Have you integrated VC2005/2008 runtimes when you are doing a test?
  23. Not good as expected. Anyhow I vote to using 1.7zSD_en.chm too, since its layout is better than 2. So isn't there any member who knows both Russian and English well? One of my high school classmates majors Russian in college, I think I should ask her for help.
×
×
  • Create New...