[WiX-users] com registration
I'm using heat to generate the fragment for my COM object. After installing the MSI, the CLSID entries are not created in the registry. Should I add Registry elements to my WXS file manually or am I doing something wrong? Thanks, Dariel -- Magic Quadrant for Content-Aware Data Loss Prevention Research study explores the data loss prevention market. Includes in-depth analysis on the changes within the DLP market, and the criteria used to evaluate the strengths and weaknesses of these DLP solutions. http://www.accelacomm.com/jaw/sfnl/114/51385063/ ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] MSIUSEREALADMINDETECTION Privileged and AdminUser
I'm attempting to disallow the installation/uninstallation of the MSI unless it is executed from the bootstrapper (which has a requireAdministrator manifest) or from an elevated command prompt. I'm experiencing some inconsistencies with the properties in the subject line. I set the MSIUSEREALADMINDETECTION to 1 to ensure that the elevation is properly recognized. I have a launch condition that specifies: Condition Message= You must be an administrator (Privileged property) to execute the MSI.![CDATA[Privileged]]/Condition This works great for installation. However, for uninstall, this never shows up. I added the following condition: Condition Message=You must be an administrator (AdminUser property) to execute the MSI.![CDATA[AdminUser]]/Condition This works great for the uninstall. However, for the installation, this never shows up. I'd hate to rely on both of them, as it seems unintuitive (and a major hack). Shouldn't it be sufficient to specify the first condition? Thanks, Dariel -- ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] MSIUSEREALADMINDETECTION Privileged and AdminUser
Please disregard. Apparently when MSIUSEREALADMINDETECTION is set, it changes the AdminUser meaning as specified in the MSDN documentation: http://msdn.microsoft.com/en-us/library/aa816403(VS.85).aspx Dariel -Original Message- From: Dariel Marlow [mailto:dmar...@microsoft.com] Sent: Tuesday, May 04, 2010 11:38 AM To: wix-users@lists.sourceforge.net Subject: [WiX-users] MSIUSEREALADMINDETECTION Privileged and AdminUser I'm attempting to disallow the installation/uninstallation of the MSI unless it is executed from the bootstrapper (which has a requireAdministrator manifest) or from an elevated command prompt. I'm experiencing some inconsistencies with the properties in the subject line. I set the MSIUSEREALADMINDETECTION to 1 to ensure that the elevation is properly recognized. I have a launch condition that specifies: Condition Message= You must be an administrator (Privileged property) to execute the MSI.![CDATA[Privileged]]/Condition This works great for installation. However, for uninstall, this never shows up. I added the following condition: Condition Message=You must be an administrator (AdminUser property) to execute the MSI.![CDATA[AdminUser]]/Condition This works great for the uninstall. However, for the installation, this never shows up. I'd hate to rely on both of them, as it seems unintuitive (and a major hack). Shouldn't it be sufficient to specify the first condition? Thanks, Dariel -- ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Update progress bar from deferred custom action
Matt, thank you! I had nearly the same thing, but was trying to follow the steps on the site. Having the immediate and deferred custom actions is what was causing me problems. Thanks again, Dariel -Original Message- From: Matt Johnson [mailto:ma...@timeamerica.com] Sent: Monday, May 03, 2010 6:37 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Update progress bar from deferred custom action Dariel, Here are two c# functions that should help you work with the progress bar from a managed custom action. If you're using unmanaged c++ code, refer to WcaProgressMessage as Rob suggested. public static MessageResult ResetProgressBar(Session session, int totalStatements) { var record = new Record(3); record[1] = 0; // Reset message record[2] = totalStatements; // total ticks record[3] = 0; // forward motion return session.Message(InstallMessage.Progress, record); } public static MessageResult IncrementProgressBar(Session session) { var record = new Record(3); record[1] = 2; // ProgressReport message record[2] = 1; // ticks to increment record[3] = 0; // ignore return session.Message(InstallMessage.Progress, record); } If you get a result of MessageResult.Cancel, it means the user pressed the cancel button on the progress dialog and you'll want to exit your custom action cleanly with ActionResult.UserExit. Matt Johnson MCPD, MCTS, MCSD, MCDBA Director of Application Development Time America, Inc. ma...@timeamerica.com | www.timeamerica.com -Original Message- From: Matt Johnson [mailto:ma...@timeamerica.com] Sent: Sunday, May 02, 2010 8:26 PM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Update progress bar from deferred custom action Dariel, I'm doing this in a managed custom action (c#). I'll post it here first thing tomorrow. -Matt Sent from my iPhone On May 2, 2010, at 7:52 PM, Rob Mensching r...@robmensching.com wrote: The WiX toolset uses WcaProgressMessage() to do this. There are a number of examples in the WiX custom action code using it. On Sun, May 2, 2010 at 7:03 PM, Dariel Marlow dmar...@microsoft.com wrote: I've followed the example on MSDN ( http://msdn.microsoft.com/en-us/library/aa367525(VS.85).aspx) about adding custom actions to the progress bar, however, only the action text updates. The progress bar does not move. Does anyone have an example of how to update the progress bar from within a custom action? Thanks, Dariel --- --- --- - ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- virtually, Rob Mensching - http://RobMensching.com LLC --- --- --- - ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] Update progress bar from deferred custom action
I've followed the example on MSDN (http://msdn.microsoft.com/en-us/library/aa367525(VS.85).aspx) about adding custom actions to the progress bar, however, only the action text updates. The progress bar does not move. Does anyone have an example of how to update the progress bar from within a custom action? Thanks, Dariel -- ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Can't get my custom action to read the CustomActionData property.
I've had luck naming the custom action property to the same name as the custom action which needs the data. For example: CustomAction Id=CA_FileList Property=CA_Relocate Value=MSI;[INSTALLDIR];[#F_txt_Mzc3MjQyNTQ1OA] Return=check / CustomAction Id=CA_Relocate BinaryKey=B_ClearFolder DllEntry=Relocate Return=check Execute=deferred / Also, I found that if you have your Value field formatted in such a way (KEY=VALUE;KEY=VALUE;...), your session's CustomActionData property formats it properly in the dictionary. Dariel -Original Message- From: Curtis Jewell [mailto:lists.wix-us...@csjewell.fastmail.us] Sent: Friday, April 16, 2010 7:30 PM To: discussion for Windows Installer XML toolset. Subject: [WiX-users] Can't get my custom action to read the CustomActionData property. It's a deferred-execution DLL custom action that I'm writing. Is it that I'm doing it too early, too late, the wrong thing, what? (It has to be after InstallFiles because it modifies 40 of the 8000 files that were just installed to refer to the location that the files were installed to, instead of the location that they were built in.) Here's how the custom action is defined in my main file: CustomAction Id=CA_FileList Property=CustomActionData Value=MSI;[INSTALLDIR];[#F_txt_Mzc3MjQyNTQ1OA] Return=check / CustomAction Id=CA_Relocate BinaryKey=B_ClearFolder DllEntry=Relocate Return=check Execute=deferred / InstallExecuteSequence !-- Other custom actions here. -- Custom Action=CA_FileList After=InstallFiles/ Custom Action=CA_Relocate After=CA_FileList ![CDATA[NOT (NO_RELOCATE OR Installed)]] /Custom /InstallExecuteSequence ... And here's the source code. UINT __stdcall Relocate( MSIHANDLE hModule) // Handle of MSI being installed. [in] // Passed to most other routines. { TCHAR sInstallDirectory[MAX_PATH + 1]; TCHAR sRelocationFile[MAX_PATH + 1]; TCHAR sCAData[MAX_PATH * 2 + 7]; UINT uiAnswer; DWORD dwPropLength; // Get directory to relocate to. dwPropLength = MAX_PATH * 2 + 6; uiAnswer = ::MsiGetProperty(hModule, TEXT(CustomActionData), sCAData, dwPropLength); if (ERROR_SUCCESS != uiAnswer) { return uiAnswer; } // *** At this point, uiAnswer = ERROR_SUCCESS, dwPropLength is 0, and sCAData is an empty string, *** // *** so the first tokenize call is failing my check and returning ERROR_INSTALL_FAILURE. *** // *** Am I doing something wrong here? *** TCHAR *sTokenContext = NULL; TCHAR *sToken = NULL; sToken = _tcstok_s(sCAData, _T(;), sTokenContext); if (0 != _tcscmp(sToken, _T(MSI))) { return ERROR_INSTALL_FAILURE; } sToken = _tcstok_s(NULL, _T(;), sTokenContext); _tcscpy_s(sInstallDirectory, _MAX_PATH, sToken); sToken = _tcstok_s(NULL, _T(;), sTokenContext); _tcscpy_s(sRelocationFile, _MAX_PATH, sToken); return Relocate_Worker(hModule, sInstallDirectory, sRelocationFile); // which will return ERROR_SUCCESS or ERROR_INSTALL_FAILURE as appropriate. } And the applicable log entries from a /l:*vx log (the long gap was because I was doing some other stuff waiting for the debug stuff to pop up): #line 16957 Action ended 18:49:01: InstallFiles. Return value 1. MSI (s) (08:34) [18:49:01:829]: Doing action: CA_FileList Action 18:49:01: CA_FileList. Action start 18:49:01: CA_FileList. MSI (s) (08:34) [18:49:01:829]: PROPERTY CHANGE: Adding CustomActionData property. Its value is 'MSI;C:\vanilla2\;C:\vanilla2\strawberry-ui.reloc.txt'. Action ended 18:49:01: CA_FileList. Return value 1. MSI (s) (08:34) [18:49:01:829]: Doing action: CA_Relocate Action 18:49:01: CA_Relocate. Relocating Strawberry Perl... Action start 18:49:01: CA_Relocate. 1: Relocating Strawberry Perl... Action ended 18:49:01: CA_Relocate. Return value 1. #line 70989 MSI (s) (08:34) [18:51:39:847]: Executing op: ActionStart(Name=CA_Relocate,Description=Relocating Strawberry Perl...,) Action 18:51:39: CA_Relocate. Relocating Strawberry Perl... MSI (s)
Re: [WiX-users] Deferred custom action creates directories in the installation directory
That's exactly why it is of concern; it doesn't remove the temp directory after running. The other is not a native-code custom action, both are managed. I'll investigate further as to why there are differences and see if I can narrow it down. -Original Message- From: Bob Arnson [mailto:b...@joyofsetup.com] Sent: Wednesday, April 14, 2010 7:56 AM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Deferred custom action creates directories in the installation directory On 4/13/2010 9:52 PM, Dariel Marlow wrote: I have another installer that is running with elevated privileges and its deferred custom actions are executing from the windows\installer directory. I can't find why one runs from the program files directory while the other runs from windows installer directory. Is there a setting or a way to specify? The other is probably a native-code custom action; MSI uses its own directory for temporary files. Is there a reason it matters where it runs from? DTF appears to always clean up the directories it creates. -- sig://boB http://joyofsetup.com/ -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] Deferred custom action creates directories in the installation directory
When running the deferred custom action, a directory is created in the installation directory. The log files says that the custom action is being extracted to a temporary folder. Why is it not doing this in the typical temp directory? Here's the pertinent part of the log file: ... MSI (s) (0C:88) [16:06:37:787]: Generating random cookie. MSI (s) (0C:88) [16:06:37:787]: Created Custom Action Server with PID 3476 (0xD94). MSI (s) (0C:98) [16:06:37:819]: Running as a service. MSI (s) (0C:98) [16:06:37:819]: Hello, I'm your 32bit Elevated custom action server. SFXCA: Extracting custom action to temporary directory: C:\Program Files\Product\Product.CA.dll-3\ SFXCA: Binding to CLR version v2.0.50727 Calling custom action Product.DeferredCustomActions! Product.DeferredCustomActions.CustomActions.PostInstall Product: Product event log source started to register event source. MSI (s) (0C:E8) [16:06:39:925]: Executing op: End(Checksum=0,ProgressTotalHDWord=0,ProgressTotalLDWord=8411802) MSI (s) (0C:E8) [16:06:40:143]: User policy value 'DisableRollback' is 0 MSI (s) (0C:E8) [16:06:40:143]: Machine policy value 'DisableRollback' is 0 Action 16:06:40: RollbackCleanup. Removing backup files ... -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Deferred custom action creates directories in the installation directory
I have another installer that is running with elevated privileges and its deferred custom actions are executing from the windows\installer directory. I can't find why one runs from the program files directory while the other runs from windows installer directory. Is there a setting or a way to specify? -Original Message- From: Bob Arnson [mailto:b...@joyofsetup.com] Sent: Tuesday, April 13, 2010 7:15 PM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Deferred custom action creates directories in the installation directory On 4/13/2010 6:11 PM, Dariel Marlow wrote: When running the deferred custom action, a directory is created in the installation directory. The log files says that the custom action is being extracted to a temporary folder. Why is it not doing this in the typical temp directory? Security: It ensures that the CA DLL is run from an appropriately ACL'd directory, so a nonprivileged user can't overwrite a DLL that the MSI server runs with elevated privileges. -- sig://boB http://joyofsetup.com/ -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] using value of checkbox in deferred custom action
I'm using the property through CustomActionData, but it wasn't showing up. My mistake was that I wasn't setting the property as secure. Once I specified the property to be secure, it works. -Original Message- From: Bob Arnson [mailto:b...@joyofsetup.com] Sent: Saturday, April 10, 2010 7:02 AM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] using value of checkbox in deferred custom action On 4/9/2010 1:03 AM, Dariel Marlow wrote: What's the proper way to set the custom action data to the value of the checkbox control for a deferred custom action? Currently, it seems the value is being set after the ExitDialog Action and after the custom action has executed. Deferred CAs can't get to properties set in the UI or immediate phases. You need to pass it as CustomActionData. -- sig://boB http://joyofsetup.com/ -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] Best way to change UninstallString
Currently, when uninstalling from Programs and Features it uses a /x to remove the product. This, however, does not show the UI with its options. Is there a way to change the default behavior of the UninstallString? I've searched online and found that setting ARPNOREMOVE causes the UninstallString to not be set. I can then write to the registry and set UninstallString manually. Is this the best way of going about it? -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] using value of checkbox in deferred custom action
What's the proper way to set the custom action data to the value of the checkbox control for a deferred custom action? Currently, it seems the value is being set after the ExitDialog Action and after the custom action has executed. -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] Several Questions - Zip64, Debugging
1. Does WIX support MSI files larger than 4GB? If so, what's the best practice on very large MSI files? I'm aware of the CAB file limitations, but I've also run into WIX complaining about large files even if they aren't being placed into a CAB file. I read briefly in the DTF chm that there is ZIP64 support for large files. Is that something that is used from within the WXS file? 2. Debugging managed custom actions does not load symbols. After reading the different ways on getting debugging to work (http://blog.torresdal.net/CommentView,guid,bfebe347-ad82-4c76-a96e-1c22aa39efc9.aspx) I've not been able to successfully step through in VS with my code and symbols. Is there documentation on how to get this working successfully? Dariel -- Download Intel#174; Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users