Hello Phil Thank you for your replay Here are my conditions. Not installed and REMOVE=ALL are used for them.
<Custom Action="CmdInstallComId" After="InstallInitialize"><![CDATA[(Not Installed) And ((Privileged and VersionNT >= 502) or VersionNT = 501) And (ISOFFICEX64 = "0")]]></Custom> <Custom Action="CmdInstallComId64" After="InstallInitialize"><![CDATA[(Not Installed) And ((Privileged and VersionNT >= 502) or VersionNT = 501) And (ISOFFICEX64 = "1")]]></Custom> <Custom Action="InstallComId" After="CmdInstallComId"><![CDATA[(Not Installed) And ((Privileged and VersionNT >= 502) or VersionNT = 501) And (ISOFFICEX64 = "0")]]></Custom> <Custom Action="InstallComId64" After="CmdInstallComId64"><![CDATA[(Not Installed) And ((Privileged and VersionNT >= 502) or VersionNT = 501) And (ISOFFICEX64 = "1")]]></Custom> <Custom Action="CmdUnInstallComId" Before="RemoveFiles"><![CDATA[Installed And REMOVE="ALL" And ((Privileged and VersionNT >= 502) or VersionNT = 501) And (ISOFFICEX64 = "0")]]></Custom> <Custom Action="CmdUnInstallComId64" Before="RemoveFiles"><![CDATA[Installed And REMOVE="ALL" And ((Privileged and VersionNT >= 502) or VersionNT = 501) And (ISOFFICEX64 = "1")]]></Custom> <Custom Action="UnInstallComId" After="CmdUnInstallComId"><![CDATA[Installed And REMOVE="ALL" And ((Privileged and VersionNT >= 502) or VersionNT = 501) And (ISOFFICEX64 = "0")]]></Custom> <Custom Action="UnInstallComId64" After="CmdUnInstallComId64"><![CDATA[Installed And REMOVE="ALL" And ((Privileged and VersionNT >= 502) or VersionNT = 501) And (ISOFFICEX64 = "1")]]></Custom> I do not want make a Major update due to it's difficult for end users. it's necessary to uninstall previous version and then install new one. I would want to run one file without special command line that make change only one or two files in a product. like a hot fix. I think the best way for me, it will be set such register/unregister contions of the library that will be executed each time (install/uninstall/reinstall, patch) Thanks, Alex. Пятница, 6 декабря 2013, 8:34 -08:00 от Phil Wilson <phildgwil...@gmail.com>: >What condition did you use on the CA in the original install? If you had >used a better condition the CA would already be running during the patch >install. For the sake of argument, let's assume you used the condition "Not >Installed". This is a bad decision for at least two reasons (and there are >more): >1. It's a product based condition, and runs the CA even if that assembly >doesn't get installed because of feature selection choices. >2. Similarly, a condition based on the component being installed would run >at first install, repair, and patch install, and that's almost always what >you want. > >So the answer is to fix the CA condition and rebuild the patch. >$componentname=3 might be a better condition. > >http://msdn.microsoft.com/en-us/library/aa368012 (v=vs.85).aspx > >But as said before, you don't need custom actions to do this, ever. Yes, >there are tools like regsvr32, regasm, gacutil, installutil, but they never >need running during an MSI install. As suggested, a major upgrade is >probably the best way to get rid of the CAs and start over without using >them. > >Phil Wilson > > >On Thu, Dec 5, 2013 at 11:56 AM, Hoover, Jacob >< jacob.hoo...@greenheck.com >wrote: > >> Don't patch it, Major Upgrade it and kill that CA. You can use heat to >> harvest the COM info from the DLL and then easily support patches without >> having to fight Windows Installer because the previous developer did it in >> a non-standard way. >> >> If your issue is with VBA, you may also need to deploy the tlb files with >> your installer as I don't believe that managed assemblies contain an >> embedded tlb (but regasm generates one). >> >> -----Original Message----- >> From: Smagin Alexander [mailto:kf-...@list.ru] >> Sent: Thursday, December 05, 2013 1:44 PM >> To: General discussion about the WiX toolset. >> Subject: Re: [WiX-users] How to execute CA after path is applied >> >> >> Yes, I register library by executing regasm.exe "library" /silent >> /codebase /tl in CA during original install <CustomAction >> Id="CmdInstallComId" Property="InstallComId" >> Value=""[NETFRAMEWORK20INSTALLROOTDIR]regasm.exe" >> "[APPLICATIONROOTDIRECTORY]BARSToolbar.Service.dll" /silent >> /codebase >> /tlb:"[APPLICATIONROOTDIRECTORY]BARSToolbar.Service.tlb"" /> >> <CustomAction Id="InstallComId" BinaryKey="WixCA" DllEntry="CAQuietExec" >> Execute="commit" HideTarget="no" Return="check" Impersonate="no" /> It was >> made before me by previous developer. During uninstalling the library >> deregistered in the same way. I did not change interface of the library in >> last change but simple patching of it does not work for me. VBA cannot >> create a COM object after the patch is applied, but if the library is >> reregistered by unregistering and then registering again regasm.exe >> BARSToolbar.Service.dll /silent /unregister regasm.exe >> BARSToolbar.Service.dll /silent /codebase /tlb It works. More over this >> operation requires admin privileges. I’m not familiar much closer with .Net >> and do not know how it can be registered in other way. Thanks, Alex. >> >> Четверг, 5 декабря 2013, 11:11 -08:00 от Phil Wilson < >> phildgwil...@gmail.com >: >> >If you registered that type library with a CA in the original install >> >that may not have been the best option, TLB entries are basically just >> >a bunch of HKLM\Interface entries that can be put in the registry (Heat >> >may even extract them) so there is no need to run any code at all. So >> >it matters how you created the original typelib registration. It's not >> >clear if you actually mean "generate new tbl [sic] file" because you >> >can generate them before the build and just ship the file and the >> >registry entries. The big picture here is there is no need to ever run >> >regasm during an install or during a patch - just use Heat and populate >> the registry tables. >> > >> >Also I'm not convinced that you need to re-register typelib >> >information for just a file version change (as opposed to an assembly >> >version change which is part of the COM registration). So I think you >> >need to clarify if you are actually installing the tlb file or wanting >> >to re-create it during the install, and how you originally created the >> >typelib registration entries, and if anything has actually changed in >> >the interfaces and COM registration. This can all be rather complicated. >> > >> >Phil Wilson >> > >> > >> >On Thu, Dec 5, 2013 at 10:43 AM, Smagin Alexander < kf-...@list.ru > >> wrote: >> > >> >> >> >> I have created a path (msp file) as difference beetwen small update >> >> 1.0.0.0 to 1.0.0.1. One dll is changes. this dll is .Net assembly >> >> (COM Object). So I need to reregister it ( generate new tbl file) >> >> after the patch is applied. Does the path supported to perform some >> >> custom actions such as run regasm command to register new dll? >> >> How can it be done? >> >> >> >> Thanks, >> >> Alex. >> >> >> >> >> >> --------------------------------------------------------------------- >> >> --------- >> >> Sponsored by Intel(R) XDK >> >> Develop, test and display web and hybrid apps with a single code base. >> >> Download it for free now! >> >> >> >> >> >> http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg >> >> .clktrk _______________________________________________ >> >> WiX-users mailing list >> >> WiX-users@lists.sourceforge.net >> >> https://lists.sourceforge.net/lists/listinfo/wix-users >> >> >> >----------------------------------------------------------------------- >> >------- >> >Sponsored by Intel(R) XDK >> >Develop, test and display web and hybrid apps with a single code base. >> >Download it for free now! >> > http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.c >> >lktrk _______________________________________________ >> >WiX-users mailing list >> > WiX-users@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/wix-users >> >> >> ------------------------------------------------------------------------------ >> Sponsored by Intel(R) XDK >> Develop, test and display web and hybrid apps with a single code base. >> Download it for free now! >> >> http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk >> _______________________________________________ >> WiX-users mailing list >> WiX-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wix-users >> >> ------------------------------------------------------------------------------ >> Sponsored by Intel(R) XDK >> Develop, test and display web and hybrid apps with a single code base. >> Download it for free now! >> >> http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk >> _______________________________________________ >> WiX-users mailing list >> WiX-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wix-users >> >------------------------------------------------------------------------------ >Sponsored by Intel(R) XDK >Develop, test and display web and hybrid apps with a single code base. >Download it for free now! >http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk >_______________________________________________ >WiX-users mailing list >WiX-users@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Sponsored by Intel(R) XDK Develop, test and display web and hybrid apps with a single code base. Download it for free now! http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users