Hi, I suggest you read the manual, tutorial or the book on WiX or at least look at the online help on MSI. The part about properties should help you well underway.
Same for the initial problem Chris has. Or to be in your language: RTFT or RTFM :) Albert van Peppen Senior System Engineer Insad Grafisch b.v. The Netherlands -----Oorspronkelijk bericht----- Van: sagar shinde [mailto:sagar.i...@gmail.com] Verzonden: maandag 25 oktober 2010 13:57 Aan: General discussion for Windows Installer XML toolset. Onderwerp: Re: [WiX-users] Calling a managed custom action from a UI control hi i am trying something similer to this,i want to delete folders at uninstall time,i have one VBscript for that, but how can i set path for that or how ur VBscript is getting path in ur code. how u called ur VBscript from wix installer On Wed, Oct 20, 2010 at 1:06 AM, McKinnon, Chris <cmckin...@atb.com> wrote: > You are absolutely right. I just wanted to keep all my custom actions > in the same DLL. I have two other actions for encrypting and decrypting > the .config files. I switched my code to a VBScript and it works > nicely. Here's the script if anyone is interested: > > Function DirectoryExists() > Dim path, fso > > path = Session.Property("_DirectoryExists_Path") > Set fso = CreateObject("Scripting.FileSystemObject") > If (fso.FolderExists(path)) Then > Session.Property("_DirectoryExists_Result") = "yes" > Else > Session.Property("_DirectoryExists_Result") = "no" > End If > DirectoryExists = ERROR_SUCCESS > End Function > > It's still frustrating that the DLL approach didn't work. > > Thanks, > > Chris McKinnon > > -----Original Message----- > From: Wilson, Phil [mailto:phil.wil...@invensys.com] > Sent: Tuesday, October 19, 2010 11:38 AM > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] Calling a managed custom action from a UI > control > > Are you really cranking up all this infrastructure just to see if a > directory exists? There's got to be a simpler way, even if it's only a > horrible little VBScript 10 line custom action. At least that is > natively supported by Windows Installer. > > Phil Wilson > > -----Original Message----- > From: McKinnon, Chris [mailto:cmckin...@atb.com] > Sent: Tuesday, October 19, 2010 8:58 AM > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] Calling a managed custom action from a UI > control > > Hi Blair, > > No log entries, unfortunately. I've let my installer sit spinning for > about 20-30 minutes. I could let it sit longer but I don't think that > would help. I'm going to try my installer on a Windows 2000 > Professional workstation when I have a chance today. Let me know if > there's anything else I can do to track down this issue. > > Thanks, > > Chris McKinnon > > -----Original Message----- > From: Blair [mailto:os...@live.com] > Sent: Tuesday, October 19, 2010 12:06 AM > To: 'General discussion for Windows Installer XML toolset.' > Subject: Re: [WiX-users] Calling a managed custom action from a UI > control > > Whenever Windows Installer launches a DLL-type custom action, it does so > from a separate msiexec.exe process instance (sandboxing the custom > action > code, if you will). However, because this "sandbox" process may be > reused, > and because loading pre-4.x CLR runtimes "marks" the process preventing > a > different runtime from ever being loaded, DTF runs the assemblies in > their > own child process. > > When you build a DTF custom action assembly, a native stub is > built/modified > that contains an entry point for each method with a > CustomActionAttribute, > along with being "packed" with your assembly, config, and dependencies. > This > stub sends a copy of itself to RunDll.exe after creating a two-way > communications pipe to communicate with its child process (which allows > for > querying the session for properties, running queries, etc.). > > The stub in the (grandchild) process establishes communication with its > parent (the stub in the sandbox), extracts its payload, loads the > indicated > CLR, loads your assembly into an AppDomain, and finally calls your code > (this is where the transition into managed code finally occurs). You > seem to > be hanging somewhere in this paragraph (at least until you kill the > rundll.exe process). Are there any System or Application event log > entries > that may explain/describe some failure with the CLR spinup? > Unfortunately > calling MsiProcessMessage is documented to not work from a DoAction so > any > error or progress logging performed by the stub won't show up. > > -----Original Message----- > From: McKinnon, Chris [mailto:cmckin...@atb.com] > Sent: Monday, October 18, 2010 10:52 AM > To: wix-users@lists.sourceforge.net > Subject: Re: [WiX-users] Calling a managed custom action from a UI > control > > Thanks for the ideas Steve. > > I tried running my code in a separate thread, like yours, but it still > hangs. I'm running on Windows Vista Business 32-bit. I noticed, by > accident, that in Process Explorer when the custom action starts up that > a new process tree is spawned: > > 1. msiexec.exe > 2. msiexec.exe > 3. rundll.exe (DTF Self-Extracting Custom Action) > > The custom action is run when I click the next button on the > ServiceOptionsDlg in my installer. The 1st time I click the button it > hangs. If I kill the process tree above and click the next button > again, it runs my custom action. Every time after that, if I click > "next", my custom action works fine. I'm baffled why. Here's the log > from me, killing the process tree the 1st time (the one at > 11:11:06:126), then running my custom action (Directory.Exists()) on a > path of "t" and then on a path of "C:\": > > Action 11:08:53: ServiceOptionsDlg. Dialog created > MSI (c) (CC:24) [11:08:58:414]: PROPERTY CHANGE: Adding ARCHIVE_PATH > property. Its value is 't'. > MSI (c) (CC:24) [11:08:58:543]: PROPERTY CHANGE: Adding > _DirectoryExists_Path property. Its value is 't'. > MSI (c) (CC:24) [11:08:58:543]: Doing action: CheckArchiveDirectory > Action 11:08:58: CheckArchiveDirectory. > Action start 11:08:58: CheckArchiveDirectory. > MSI (c) (CC:80) [11:08:58:573]: Invoking remote custom action. DLL: > C:\Users\e25735\AppData\Local\Temp\MSIF23D.tmp, Entrypoint: > DirectoryExists > MSI (c) (CC:A8) [11:08:58:574]: Cloaking enabled. > MSI (c) (CC:A8) [11:08:58:574]: Attempting to enable all disabled > privileges before calling Install on Server > MSI (c) (CC:A8) [11:08:58:575]: Connected to service for CA interface. > Action ended 11:11:02: CheckArchiveDirectory. Return value 1. > MSI (c) (CC:24) [11:11:06:126]: Doing action: CheckArchiveDirectory > Action 11:11:06: CheckArchiveDirectory. > Action start 11:11:06: CheckArchiveDirectory. > MSI (c) (CC:A0) [11:11:06:184]: Invoking remote custom action. DLL: > C:\Users\e25735\AppData\Local\Temp\MSIE4A7.tmp, Entrypoint: > DirectoryExists > MSI (c) (CC:A0) [11:11:06:184]: Lost connection to custom action server > process. Attempting to regenerate. > MSI (c) (CC:A8) [11:11:06:259]: Cloaking enabled. > MSI (c) (CC:A8) [11:11:06:259]: Attempting to enable all disabled > privileges before calling Install on Server > MSI (c) (CC:A8) [11:11:06:259]: Connected to service for CA interface. > MSI (c) (CC!8C) [11:11:31:366]: PROPERTY CHANGE: Adding > _DirectoryExists_Result property. Its value is 'no'. > Action ended 11:11:47: CheckArchiveDirectory. Return value 1. > MSI (c) (CC:24) [11:11:47:571]: PROPERTY CHANGE: Adding VErr_Text > property. Its value is 'The archive path specified does not exist.'. > Action 11:11:47: ValidationErrDlg. Dialog created > MSI (c) (CC:24) [11:11:57:555]: PROPERTY CHANGE: Modifying ARCHIVE_PATH > property. Its current value is 't'. Its new value: 'c:\'. > MSI (c) (CC:24) [11:11:57:731]: PROPERTY CHANGE: Modifying > _DirectoryExists_Path property. Its current value is 't'. Its new value: > 'c:\'. > MSI (c) (CC:24) [11:11:57:731]: Doing action: CheckArchiveDirectory > Action 11:11:57: CheckArchiveDirectory. > Action start 11:11:57: CheckArchiveDirectory. > MSI (c) (CC:14) [11:11:57:745]: Invoking remote custom action. DLL: > C:\Users\e25735\AppData\Local\Temp\MSIAE3D.tmp, Entrypoint: > DirectoryExists > MSI (c) (CC!E8) [11:12:05:774]: PROPERTY CHANGE: Modifying > _DirectoryExists_Result property. Its current value is 'no'. Its new > value: 'yes'. > Action ended 11:12:06: CheckArchiveDirectory. Return value 1. > Action 11:12:06: VerifyReadyDlg. Dialog created > > It appears that the 1st time my custom action runs, it's hanging before > it even gets to my code. I've tried putting MessageBox and > System.Diagnosics.Debugger.Launch() as the 1st line of code in my custom > action. They never get called. I also tried this on our SIT Windows > 2003 server. The custom action runs without hanging. Here is the log: > > Action 11:44:17: ServiceOptionsDlg. Dialog created > MSI (c) (68:74) [11:44:20:682]: PROPERTY CHANGE: Adding ARCHIVE_PATH > property. Its value is 't'. > MSI (c) (68:74) [11:44:20:854]: PROPERTY CHANGE: Adding > _DirectoryExists_Path property. Its value is 't'. > MSI (c) (68:74) [11:44:20:854]: Doing action: CheckArchiveDirectory > Action 11:44:20: CheckArchiveDirectory. > Action start 11:44:20: CheckArchiveDirectory. > MSI (c) (68:1C) [11:44:21:651]: Invoking remote custom action. DLL: > C:\DOCUME~1\e25735\LOCALS~1\Temp\1\MSI2.tmp, Entrypoint: DirectoryExists > MSI (c) (68:AC) [11:44:21:667]: Cloaking enabled. > MSI (c) (68:AC) [11:44:21:667]: Attempting to enable all disabled > priveleges before calling Install on Server > MSI (c) (68:AC) [11:44:21:667]: Connected to service for CA interface. > MSI (c) (68!68) [11:44:22:745]: PROPERTY CHANGE: Adding > _DirectoryExists_Result property. Its value is 'no'. > Action ended 11:44:22: CheckArchiveDirectory. Return value 1. > MSI (c) (68:74) [11:44:22:901]: PROPERTY CHANGE: Adding VErr_Text > property. Its value is 'The archive path specified does not exist.'. > Action 11:44:22: ValidationErrDlg. Dialog created > MSI (c) (68:74) [11:44:29:480]: PROPERTY CHANGE: Modifying ARCHIVE_PATH > property. Its current value is 't'. Its new value: 'c:\'. > MSI (c) (68:74) [11:44:29:637]: PROPERTY CHANGE: Modifying > _DirectoryExists_Path property. Its current value is 't'. Its new value: > 'c:\'. > MSI (c) (68:74) [11:44:29:637]: Doing action: CheckArchiveDirectory > Action 11:44:29: CheckArchiveDirectory. > Action start 11:44:29: CheckArchiveDirectory. > MSI (c) (68:00) [11:44:29:668]: Invoking remote custom action. DLL: > C:\DOCUME~1\e25735\LOCALS~1\Temp\1\MSI3.tmp, Entrypoint: DirectoryExists > MSI (c) (68!00) [11:44:30:387]: PROPERTY CHANGE: Modifying > _DirectoryExists_Result property. Its current value is 'no'. Its new > value: 'yes'. > Action ended 11:44:30: CheckArchiveDirectory. Return value 1. > Action 11:44:30: VerifyReadyDlg. Dialog created > > Anyone have any ideas what would be causing the hang? It was thinking > it might be permissions or a group policy setting but then running the > custom action should fail every time. > > Thank, > > Chris McKinnon > > > -----Original Message----- > From: Steve Green [mailto:sgr...@gtl.biz] > Sent: Monday, October 18, 2010 2:38 AM > To: wix-users@lists.sourceforge.net > Subject: Re: [WiX-users] Calling a managed custom action from a UI > control > > > Chris, > > I had a similar problem opening the windows OpenFileDialog common > dialog. I > found it would work fine on Windows Server 2003 but on Windows 7 it just > hung, showing the same spinning wheel. > > I ended up having to open the dialog in a new thread, then all worked > fine. > > My C# code was as follows: > > > public class ShowOpenFileDlg > { > private OpenFileDialog _dlg; > private Session _session; > > public ShowOpenFileDlg(Session session) > { > _session = session; > _dlg = new OpenFileDialog(); > } > > public void Show() > { > if (_dlg.ShowDialog() == DialogResult.OK) > { > _session["BROWSEFILE"] = _dlg.FileName; > } > } > } > > [CustomAction] > public static ActionResult ShowFileOpenDlg(Session session) > { > ShowOpenFileDlg dlg = new ShowOpenFileDlg(session); > Thread thread = new Thread(dlg.Show); > thread.SetApartmentState(ApartmentState.STA); > thread.Start(); > thread.Join(); > > return ActionResult.Success; > } > > As for debugging, I had the same problem with the log file so ended up > just > adding MessageBox.Show(...) lines through my code. > > Hope this helps. > > Steve > > McKinnon Chris wrote: > > > > Hi, > > > > I have built a managed custom action to check if a UNC path exists. > I'm > > not installing to this path. This path is simply being set as the > value > > of a .config file setting during the install. I just want to verify > > that it is a valid path. The custom action is defined as follows: > > > > [CustomAction] > > public static ActionResult DirectoryExists(Session session) > > { > > CustomActionService service = new CustomActionService(); > > return service.DirectoryExists(session); > > } > > > > I created the custom action project using the Visual Studio template > for > > a C# custom action. This custom action expects a > > "_DirectoryExists_Path" property to contain the path to check. And it > > populates a "_DirectoryExists_Result" with a "yes" (true) or "no" > > (false) result. The custom action is just calling > > System.IO.Directory.Exists() to do the check. I have the custom > action > > defined in the installer like so: > > > > <CustomAction Id="CheckArchiveDirectory" > > BinaryKey="AppDevInstallCustomActions.dll" DllEntry="DirectoryExists" > > Execute="immediate" Return="ignore" Impersonate="yes" /> > > > > And to be called in the UI, like so: > > > > <Publish Dialog="ServiceOptionsDlg" Control="Back" Event="NewDialog" > > Value="ServiceCredentialsDlg">1</Publish> > > <Publish Dialog="ServiceOptionsDlg" Control="Next" > > Property="_DirectoryExists_Path" Value="[ARCHIVE_PATH]" > > Order="1">1</Publish> > > <Publish Dialog="ServiceOptionsDlg" Control="Next" Event="DoAction" > > Value="CheckArchiveDirectory" Order="2">1</Publish> > > <Publish Dialog="ServiceOptionsDlg" Control="Next" > Property="VErr_Text" > > Value="The archive path specified does not exist." > > Order="3"><![CDATA[_DirectoryExists_Result = "no"]]></Publish> > > <Publish Dialog="ServiceOptionsDlg" Control="Next" Event="SpawnDialog" > > Value="ValidationErrDlg" Order="4"><![CDATA[_DirectoryExists_Result = > > "no"]]></Publish> > > <Publish Dialog="ServiceOptionsDlg" Control="Next" Event="NewDialog" > > Value="VerifyReadyDlg" Order="5"><![CDATA[_DirectoryExists_Result = > > "yes"]]></Publish> > > > > When run to the installer and click the "Next" button, I get the > > spinning blue wheel of death. I've tried adding a > > "System.Diagnostics.Debugger.Launch();" line to the above code but the > > debugger is never launched. If I run a verbose log, it just ends at > the > > line before the custom action call. Here's the last 5 lines: > > > > Action 10:41:55: ServiceOptionsDlg. Dialog created > > MSI (c) (20:44) [10:41:57:524]: Doing action: CheckArchiveDirectory > > Action 10:41:57: CheckArchiveDirectory. > > Action start 10:41:57: CheckArchiveDirectory. > > MSI (c) (20:6C) [10:41:57:541]: Invoking remote custom action. DLL: > > > > I'm stumped. Any ideas or tips for debugging this would be > > appreciated. I'm also encrypting (and decrypting) my .config files > > using this same managed custom action dll, so I know the DLL is > > partially working. These custom actions are scheduled in the > > InstallExecuteSequence after "InstallFinalize", however. > > > > Thanks, > > > > Chris McKinnon > > > > > > > > The information contained in this e-mail is confidential and may > contain > > privileged information. It is intended only for the person or persons > > named above. If you are not an intended recipient of this e-mail > please be > > advised that any distribution or copying of this e-mail is prohibited. > If > > you have received this e-mail in error, please notify us by return > e-mail > > and delete all copies of the e-mail and any attachments. > > > ------------------------------------------------------------------------ > ------ > > Download new Adobe(R) Flash(R) Builder(TM) 4 > > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > > Flex(R) Builder(TM)) enable the development of rich applications that > run > > across multiple browsers and platforms. Download your free trials > today! > > http://p.sf.net/sfu/adobe-dev2dev > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > > > -- > View this message in context: > http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Calling-a- > managed-custom-action-from-a-UI-control-tp5639681p5646237.html > Sent from the wix-users mailing list archive at Nabble.com. > > ------------------------------------------------------------------------ > ------ > Download new Adobe(R) Flash(R) Builder(TM) 4 > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > Flex(R) Builder(TM)) enable the development of rich applications that > run > across multiple browsers and platforms. Download your free trials today! > http://p.sf.net/sfu/adobe-dev2dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > The information contained in this e-mail is confidential and may contain > privileged information. It is intended only for the person or persons > named > above. If you are not an intended recipient of this e-mail please be > advised > that any distribution or copying of this e-mail is prohibited. If you > have > received this e-mail in error, please notify us by return e-mail and > delete > all copies of the e-mail and any attachments. > > ------------------------------------------------------------------------ > ---- > -- > Download new Adobe(R) Flash(R) Builder(TM) 4 > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > Flex(R) Builder(TM)) enable the development of rich applications that > run > across multiple browsers and platforms. Download your free trials today! > http://p.sf.net/sfu/adobe-dev2dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ------------------------------------------------------------------------ > ------ > Download new Adobe(R) Flash(R) Builder(TM) 4 > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > Flex(R) Builder(TM)) enable the development of rich applications that > run > across multiple browsers and platforms. Download your free trials today! > http://p.sf.net/sfu/adobe-dev2dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > The information contained in this e-mail is confidential and may contain > privileged information. It is intended only for the person or persons > named above. If you are not an intended recipient of this e-mail please > be advised that any distribution or copying of this e-mail is > prohibited. If you have received this e-mail in error, please notify us > by return e-mail and delete all copies of the e-mail and any > attachments. > > ------------------------------------------------------------------------ > ------ > Download new Adobe(R) Flash(R) Builder(TM) 4 > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > Flex(R) Builder(TM)) enable the development of rich applications that > run > across multiple browsers and platforms. Download your free trials today! > http://p.sf.net/sfu/adobe-dev2dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > *** Confidentiality Notice: This e-mail, including any associated or > attached files, is intended solely for the individual or entity to which > it is addressed. This e-mail is confidential and may well also be > legally privileged. If you have received it in error, you are on notice > of its status. Please notify the sender immediately by reply e-mail and > then delete this message from your system. Please do not copy it or use > it for any purposes, or disclose its contents to any other person. This > email comes from a division of the Invensys Group, owned by Invensys > plc, which is a company registered in England and Wales with its > registered office at 3rd Floor, 40 Grosvenor Place, London, SW1X 7AW > (Registered number 166023). For a list of European legal entities within > the Invensys Group, please go to > http://www.invensys.com/legal/default.asp?top_nav_id=77&nav_id=80&prev_i > d=77. > > You may contact Invensys plc on +44 (0)20 3155 1200 or e-mail > recept...@invensys.com. This e-mail and any attachments thereto may be > subject to the terms of any agreements between Invensys (and/or its > subsidiaries and affiliates) and the recipient (and/or its subsidiaries > and affiliates). > > > > ------------------------------------------------------------------------ > ------ > Download new Adobe(R) Flash(R) Builder(TM) 4 > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > Flex(R) Builder(TM)) enable the development of rich applications that > run > across multiple browsers and platforms. Download your free trials today! > http://p.sf.net/sfu/adobe-dev2dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > The information contained in this e-mail is confidential and may contain > privileged information. It is intended only for the person or persons named > above. If you are not an intended recipient of this e-mail please be advised > that any distribution or copying of this e-mail is prohibited. If you have > received this e-mail in error, please notify us by return e-mail and delete > all copies of the e-mail and any attachments. > > > ------------------------------------------------------------------------ ------ > Download new Adobe(R) Flash(R) Builder(TM) 4 > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > Flex(R) Builder(TM)) enable the development of rich applications that run > across multiple browsers and platforms. Download your free trials today! > http://p.sf.net/sfu/adobe-dev2dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > ------------------------------------------------------------------------ ------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users