{"id":2093,"date":"2006-08-14T19:48:24","date_gmt":"2006-08-14T19:48:24","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/heaths\/2006\/08\/14\/determine-if-the-custom-action-function-is-exported\/"},"modified":"2006-08-14T19:48:24","modified_gmt":"2006-08-14T19:48:24","slug":"determine-if-the-custom-action-function-is-exported","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/setup\/determine-if-the-custom-action-function-is-exported\/","title":{"rendered":"Determine if the Custom Action Function is Exported"},"content":{"rendered":"<p>Another <a href=\"http:\/\/blogs.msdn.com\/heaths\/archive\/2006\/07\/11\/662717.aspx\">reason<\/a> a custom action may not run is because the custom action function isn&#8217;t exported. This may not be common in most patch build systems, but could arise during authoring or if a binary wasn&#8217;t updated in the <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/binary_table.asp\">Binary table<\/a>. You should expect to find a log line similar to the following.<\/p>\n<p><font face=\"monospace\">MSI (s) (1C:C4) [16:57:23:258]: Doing action: CA_QuietExec_Post_InstallFiles<br \/>Action start 16:57:23: CA_QuietExec_Post_InstallFiles.<br \/>MSI (s) (1C:10) [16:57:23:274]: Invoking remote custom action. DLL: C:WINNTInstallerMSI140.tmp, Entrypoint: QuietExec_Post_InstallFiles<br \/>MSI (s) (1C:C4) [16:57:23:274]: Note: 1: 1723 2: CA_QuietExec_Post_InstallFiles 3: QuietExec_Post_InstallFiles 4: C:WINNTInstallerMSI140.tmp<br \/>MSI (c) (58:94) [16:57:23:289]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg<br \/>Error 1723.There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor. Action CA_QuietExec_Post_InstallFiles, entry: QuietExec_Post_InstallFiles, library: C:WINNTInstallerMSI140.tmp<\/font><\/p>\n<p>To perform a quick sanity check on the DLL, find the custom action name in the <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/customaction_table.asp\">CustomAction table<\/a> using Orca and look at the Source column for that custom action. For type 1 custom actions the Source column value is the key into the Binary table for the DLL. Don&#8217;t forget that the Type column might also include flags for scheduling, return, and in-script options.<\/p>\n<p>Now find that ID in the Binary table using Orca and double click the Data column. Select &#8220;Write binary to filename&#8221;, type or browse for a filename, and click OK.<\/p>\n<p>Load that file in <em>depends.exe<\/em> or run <em>dumpbin.exe \/exports<\/em> on it to see if the custom action function is truly exported.<\/p>\n<p><a href=\"http:\/\/blogs.msdn.com\/heaths\/archive\/2005\/12\/14\/503796.aspx\">Error message<\/a> 1723 is the <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/windows_installer_error_messages.asp\">Windows Installer error message<\/a> that is displayed to the user and\/or written to the log, but ultimately Windows Installer will return <code>ERROR_INSTALL_FAILURE<\/code> (1603).<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Another reason a custom action may not run is because the custom action function isn&#8217;t exported. This may not be common in most patch build systems, but could arise during authoring or if a binary wasn&#8217;t updated in the Binary table. You should expect to find a log line similar to the following. MSI (s) [&hellip;]<\/p>\n","protected":false},"author":389,"featured_media":3843,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[20,23],"class_list":["post-2093","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-installation","tag-logging"],"acf":[],"blog_post_summary":"<p>Another reason a custom action may not run is because the custom action function isn&#8217;t exported. This may not be common in most patch build systems, but could arise during authoring or if a binary wasn&#8217;t updated in the Binary table. You should expect to find a log line similar to the following. MSI (s) [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts\/2093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/users\/389"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/comments?post=2093"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts\/2093\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/media\/3843"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/media?parent=2093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/categories?post=2093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/tags?post=2093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}