Re: [WiX-users] Dealing with ICE48 warning
Open the MSI up in Orca or Inst Ed and you might find that the directory IDs in the merge modules have had Guids added to them. Ids in modules are modularised to avoid name clashes. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 23:14 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Hi Peter... It was a bit of a nuisance to get a verbose log out of the wmi install, so I've been comparing the logs from the builds using the type 51 and type 35 work-arounds vs the builds just ignoring the error. The differences I see is that TARGETDIR=my custom value in the early phases of all logs, but in the ones with the type 51 and type 35 work-arounds TARGETDIR just doesn't appear to be used in coming up with the final destination for some of the merge modules. Why? I don't know. E.g. Action ended 17:14:01: INSTALL. Return value 1. Property(C): Binaries = C:\OurPath\Binaries\ Property(C): TARGETDIR = C:\OurPath\ Property(C): ASP = C:\OurPath\ASP\ Property(C): Ptt = C:\OurPath\Ptt\ In the log when I just ignore the warning compared to Action ended 15:27:12: INSTALL. Return value 1. Property(S): Binaries = C:\OurPath\Binaries\ Property(S): TARGETDIR = C:\OurPath\ Property(S): ASP = C:\ASP\ Property(S): Ptt = C:\OurPath\Ptt\ In the log when I'm trying one of the other approaches. On your other suggestions, I found a few things: 1) Can't put a type 35 anywhere before after CostFinalize. It throws an error at any stage before. 2) I tried putting my own directory level (e.g. Directory Id=PRODUCTDIR Name=Ice48 Stub.../Directory) just inside of TARGETDIR, but using a type 51 CA Before=CostInitialize still had the same problem of pretty random directory placement. Specifically, it put things in C:\Ice48 Stub\... 3) Same as #2 but going back to type 35 after CostFinalize appeared to do the trick. Things got installed where I expected when running the msi locally. Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 12:10 PM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning The subtle differences between the two are a bit beyond me since I've never needed to distinguish between them. There's a list of considerations at http://msdn.microsoft.com/en-us/library/aa367852%28v=VS.85%29.aspx which may answer your questions. It's worth trawling through the MSDN. For us, setting the property before CostInitialize has always worked. We use a setproperty action but setdirectory would work and should make slightly more sense. It probably helps matters that we don't use merge modules nor MSI UI so the directories are determined before the MSI even starts up and don't change during installation. There are setproperty and setdirectory elements in wix3.5 to more concisely express these kinds of custom action. The remote/local difference is somewhat strange, I agree, but I'm sure there's a good reason for it. A comparison of verbose logs may give you a clue. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 16:57 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks, Peter... I can give it a shot. I was a bit perplexed when I found that the Type 51 approach worked as I expected when it installed remotely through WMI, as opposed to being run locally on the computer. By and large our ops team uses a utility to manage the farm and the installs are run remotely; the difference in behavior just annoyed me. Just out of curiosity, if I switch to using INSTALLDIR instead, does it make a difference whether I use the Type 51 or the type 35 custom actions to set it? And at which phase? I googled around and found a few posts advocating the type 51 approach Before CostFinalize, now some saying type 35 after. I'm wondering if just avoiding the specific case of TARGETDIR would push one way or the other? Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 11:45 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning I've just looked back at your original post which is how to avoid ICE48 errors. The ICE48 error is issued because ... ICE48 checks for directories that are hard-coded to local paths in the Property table. (From http://msdn.microsoft.com/en-us/library/windows/desktop/aa368977%28v=vs.85%29 .aspx) ICE48 is objecting to the use of C:\OurPath\ TARGETDIR is by default set to the root of the drive with the most free space (I think). Some of the other components, probably in the merge modules, might have directory paths rooted under a well known directory property like ProgramFilesFolder which overrides the TARGETDIR, even
Re: [WiX-users] Dealing with ICE48 warning
Okay, I'm looking at the installer in Orca. I see that all the directories declared in the modules have the package guid appended to them (e.g. ASPdirectory0.1A39512D_87E4_4FD4_AEFC_88DE0E1C2536), but that's the same for those that went to the right place and those that went somewhere else. A lot of the binary modules had a Directory Id=INSTALLDIR inside the module's Directory Id=TARGETDIR, so all those INSTALLDIRs are differentiated by the guid... Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Wednesday, October 05, 2011 4:38 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Open the MSI up in Orca or Inst Ed and you might find that the directory IDs in the merge modules have had Guids added to them. Ids in modules are modularised to avoid name clashes. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 23:14 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Hi Peter... It was a bit of a nuisance to get a verbose log out of the wmi install, so I've been comparing the logs from the builds using the type 51 and type 35 work-arounds vs the builds just ignoring the error. The differences I see is that TARGETDIR=my custom value in the early phases of all logs, but in the ones with the type 51 and type 35 work-arounds TARGETDIR just doesn't appear to be used in coming up with the final destination for some of the merge modules. Why? I don't know. E.g. Action ended 17:14:01: INSTALL. Return value 1. Property(C): Binaries = C:\OurPath\Binaries\ Property(C): TARGETDIR = C:\OurPath\ Property(C): ASP = C:\OurPath\ASP\ Property(C): Ptt = C:\OurPath\Ptt\ In the log when I just ignore the warning compared to Action ended 15:27:12: INSTALL. Return value 1. Property(S): Binaries = C:\OurPath\Binaries\ Property(S): TARGETDIR = C:\OurPath\ Property(S): ASP = C:\ASP\ Property(S): Ptt = C:\OurPath\Ptt\ In the log when I'm trying one of the other approaches. On your other suggestions, I found a few things: 1) Can't put a type 35 anywhere before after CostFinalize. It throws an error at any stage before. 2) I tried putting my own directory level (e.g. Directory Id=PRODUCTDIR Name=Ice48 Stub.../Directory) just inside of TARGETDIR, but using a type 51 CA Before=CostInitialize still had the same problem of pretty random directory placement. Specifically, it put things in C:\Ice48 Stub\... 3) Same as #2 but going back to type 35 after CostFinalize appeared to do the trick. Things got installed where I expected when running the msi locally. Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 12:10 PM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning The subtle differences between the two are a bit beyond me since I've never needed to distinguish between them. There's a list of considerations at http://msdn.microsoft.com/en-us/library/aa367852%28v=VS.85%29.aspx which may answer your questions. It's worth trawling through the MSDN. For us, setting the property before CostInitialize has always worked. We use a setproperty action but setdirectory would work and should make slightly more sense. It probably helps matters that we don't use merge modules nor MSI UI so the directories are determined before the MSI even starts up and don't change during installation. There are setproperty and setdirectory elements in wix3.5 to more concisely express these kinds of custom action. The remote/local difference is somewhat strange, I agree, but I'm sure there's a good reason for it. A comparison of verbose logs may give you a clue. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 16:57 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks, Peter... I can give it a shot. I was a bit perplexed when I found that the Type 51 approach worked as I expected when it installed remotely through WMI, as opposed to being run locally on the computer. By and large our ops team uses a utility to manage the farm and the installs are run remotely; the difference in behavior just annoyed me. Just out of curiosity, if I switch to using INSTALLDIR instead, does it make a difference whether I use the Type 51 or the type 35 custom actions to set it? And at which phase? I googled around and found a few posts advocating the type 51 approach Before CostFinalize, now some saying type 35 after. I'm wondering if just avoiding the specific case of TARGETDIR would push one way or the other? Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 11:45 AM To: General discussion
Re: [WiX-users] Dealing with ICE48 warning
Thanks for the response... I tried replacing my type 51 with CustomAction Id=SetTarget Directory=TARGETDIR Value=C:\OurPath\ / After CostFinalize, but now I get an error The folder path '?' contains an invalid character when I run the installer locally. Not sure where the ? is coming from... Mark -Original Message- From: jhennessey [mailto:jack.hennes...@hyland.com] Sent: Monday, October 03, 2011 4:48 PM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Dealing with ICE48 warning When you use a type 51 custom action it doesn't call MsiSetTargetPath because you've told it you are setting a property and not a directory. Try using a type 35 custom action (after CostFinalize) by using the Directory attribute instead of Property. -- View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Dealing-with-ICE48-warning-tp6841665p6856559.html Sent from the wix-users mailing list archive at Nabble.com. -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Dealing with ICE48 warning
Could it be the file's encoding ? Declared as UTF-8 but written in something else maybe ? -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 15:17 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks for the response... I tried replacing my type 51 with CustomAction Id=SetTarget Directory=TARGETDIR Value=C:\OurPath\ / After CostFinalize, but now I get an error The folder path '?' contains an invalid character when I run the installer locally. Not sure where the ? is coming from... Mark -Original Message- From: jhennessey [mailto:jack.hennes...@hyland.com] Sent: Monday, October 03, 2011 4:48 PM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Dealing with ICE48 warning When you use a type 51 custom action it doesn't call MsiSetTargetPath because you've told it you are setting a property and not a directory. Try using a type 35 custom action (after CostFinalize) by using the Directory attribute instead of Property. -- View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Dealing-with-IC E48-warning-tp6841665p6856559.html Sent from the wix-users mailing list archive at Nabble.com. - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users SDL PLC confidential, all rights reserved. If you are not the intended recipient of this mail SDL requests and requires that you delete it without acting upon or copying any of its contents, and we further request that you advise us. SDL PLC is a public limited company registered in England and Wales. Registered number: 02675207. Registered address: Globe House, Clivemont Road, Maidenhead, Berkshire SL6 7DY, UK. -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Dealing with ICE48 warning
Nope... The actual path is just as vanilla as the example below. Straight 7-bit ascii... Thanks mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 10:24 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Could it be the file's encoding ? Declared as UTF-8 but written in something else maybe ? -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 15:17 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks for the response... I tried replacing my type 51 with CustomAction Id=SetTarget Directory=TARGETDIR Value=C:\OurPath\ / After CostFinalize, but now I get an error The folder path '?' contains an invalid character when I run the installer locally. Not sure where the ? is coming from... Mark -Original Message- From: jhennessey [mailto:jack.hennes...@hyland.com] Sent: Monday, October 03, 2011 4:48 PM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Dealing with ICE48 warning When you use a type 51 custom action it doesn't call MsiSetTargetPath because you've told it you are setting a property and not a directory. Try using a type 35 custom action (after CostFinalize) by using the Directory attribute instead of Property. -- View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Dealing-with-IC E48-warning-tp6841665p6856559.html Sent from the wix-users mailing list archive at Nabble.com. - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users SDL PLC confidential, all rights reserved. If you are not the intended recipient of this mail SDL requests and requires that you delete it without acting upon or copying any of its contents, and we further request that you advise us. SDL PLC is a public limited company registered in England and Wales. Registered number: 02675207. Registered address: Globe House, Clivemont Road, Maidenhead, Berkshire SL6 7DY, UK. -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Dealing with ICE48 warning
I was wondering maybe *before* CostFinalize? I'm just grasping around here... -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 10:24 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Could it be the file's encoding ? Declared as UTF-8 but written in something else maybe ? -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 15:17 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks for the response... I tried replacing my type 51 with CustomAction Id=SetTarget Directory=TARGETDIR Value=C:\OurPath\ / After CostFinalize, but now I get an error The folder path '?' contains an invalid character when I run the installer locally. Not sure where the ? is coming from... Mark -Original Message- From: jhennessey [mailto:jack.hennes...@hyland.com] Sent: Monday, October 03, 2011 4:48 PM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Dealing with ICE48 warning When you use a type 51 custom action it doesn't call MsiSetTargetPath because you've told it you are setting a property and not a directory. Try using a type 35 custom action (after CostFinalize) by using the Directory attribute instead of Property. -- View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Dealing-with-IC E48-warning-tp6841665p6856559.html Sent from the wix-users mailing list archive at Nabble.com. - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users SDL PLC confidential, all rights reserved. If you are not the intended recipient of this mail SDL requests and requires that you delete it without acting upon or copying any of its contents, and we further request that you advise us. SDL PLC is a public limited company registered in England and Wales. Registered number: 02675207. Registered address: Globe House, Clivemont Road, Maidenhead, Berkshire SL6 7DY, UK. -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Dealing with ICE48 warning
I've just looked back at your original post which is how to avoid ICE48 errors. The ICE48 error is issued because ... ICE48 checks for directories that are hard-coded to local paths in the Property table. (From http://msdn.microsoft.com/en-us/library/windows/desktop/aa368977%28v=vs.85%29 .aspx) ICE48 is objecting to the use of C:\OurPath\ TARGETDIR is by default set to the root of the drive with the most free space (I think). Some of the other components, probably in the merge modules, might have directory paths rooted under a well known directory property like ProgramFilesFolder which overrides the TARGETDIR, even though they appear underneath TARGETDIR. I'm not entirely sure how to fix it to work exactly how you have it currently but I can give some info that might help. The usual pattern for having a retargetable installation is to set up the default in the directory elements and then make the installation directory a public directory property, in this case, INSTALLDIR. Directory Id=TARGETDIR Name=SourceDir Directory Id=ProgramFilesFolder Directory Id=CompanyDir Name=IniTech Directory Id=INSTALLDIR Name=Product v1 ..components... Then you can set the value of INSTALLDIR (or whatever you call it) to some other value on the command line or leave it to get the default. Note that the built-in directory property ProgramFilesFolder will override whatever TARGETDIR is set to unless youre performing an admin installation. If INSTALLDIR is defined as an absolute path, that will in turn override [ProgramFilesFolder]\InitTech. You might be able to get this to work with TARGETDIR but since Windows Installer itself will set the value of it, it's easier to define your own property and use that: in this case INSTALLDIR. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 16:00 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning I was wondering maybe *before* CostFinalize? I'm just grasping around here... -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 10:24 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Could it be the file's encoding ? Declared as UTF-8 but written in something else maybe ? -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 15:17 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks for the response... I tried replacing my type 51 with CustomAction Id=SetTarget Directory=TARGETDIR Value=C:\OurPath\ / After CostFinalize, but now I get an error The folder path '?' contains an invalid character when I run the installer locally. Not sure where the ? is coming from... Mark -Original Message- From: jhennessey [mailto:jack.hennes...@hyland.com] Sent: Monday, October 03, 2011 4:48 PM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Dealing with ICE48 warning When you use a type 51 custom action it doesn't call MsiSetTargetPath because you've told it you are setting a property and not a directory. Try using a type 35 custom action (after CostFinalize) by using the Directory attribute instead of Property. -- View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Dealing-with-IC E48-warning-tp6841665p6856559.html Sent from the wix-users mailing list archive at Nabble.com. - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users SDL PLC confidential, all rights reserved. If you are not the intended recipient of this mail SDL requests and requires that you delete it without acting upon or copying any of its contents, and we further request that you advise us. SDL PLC is a public limited company registered in England
Re: [WiX-users] Dealing with ICE48 warning
Thanks, Peter... I can give it a shot. I was a bit perplexed when I found that the Type 51 approach worked as I expected when it installed remotely through WMI, as opposed to being run locally on the computer. By and large our ops team uses a utility to manage the farm and the installs are run remotely; the difference in behavior just annoyed me. Just out of curiosity, if I switch to using INSTALLDIR instead, does it make a difference whether I use the Type 51 or the type 35 custom actions to set it? And at which phase? I googled around and found a few posts advocating the type 51 approach Before CostFinalize, now some saying type 35 after. I'm wondering if just avoiding the specific case of TARGETDIR would push one way or the other? Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 11:45 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning I've just looked back at your original post which is how to avoid ICE48 errors. The ICE48 error is issued because ... ICE48 checks for directories that are hard-coded to local paths in the Property table. (From http://msdn.microsoft.com/en-us/library/windows/desktop/aa368977%28v=vs.85%29 .aspx) ICE48 is objecting to the use of C:\OurPath\ TARGETDIR is by default set to the root of the drive with the most free space (I think). Some of the other components, probably in the merge modules, might have directory paths rooted under a well known directory property like ProgramFilesFolder which overrides the TARGETDIR, even though they appear underneath TARGETDIR. I'm not entirely sure how to fix it to work exactly how you have it currently but I can give some info that might help. The usual pattern for having a retargetable installation is to set up the default in the directory elements and then make the installation directory a public directory property, in this case, INSTALLDIR. Directory Id=TARGETDIR Name=SourceDir Directory Id=ProgramFilesFolder Directory Id=CompanyDir Name=IniTech Directory Id=INSTALLDIR Name=Product v1 ..components... Then you can set the value of INSTALLDIR (or whatever you call it) to some other value on the command line or leave it to get the default. Note that the built-in directory property ProgramFilesFolder will override whatever TARGETDIR is set to unless youre performing an admin installation. If INSTALLDIR is defined as an absolute path, that will in turn override [ProgramFilesFolder]\InitTech. You might be able to get this to work with TARGETDIR but since Windows Installer itself will set the value of it, it's easier to define your own property and use that: in this case INSTALLDIR. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 16:00 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning I was wondering maybe *before* CostFinalize? I'm just grasping around here... -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 10:24 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Could it be the file's encoding ? Declared as UTF-8 but written in something else maybe ? -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 15:17 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks for the response... I tried replacing my type 51 with CustomAction Id=SetTarget Directory=TARGETDIR Value=C:\OurPath\ / After CostFinalize, but now I get an error The folder path '?' contains an invalid character when I run the installer locally. Not sure where the ? is coming from... Mark -Original Message- From: jhennessey [mailto:jack.hennes...@hyland.com] Sent: Monday, October 03, 2011 4:48 PM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Dealing with ICE48 warning When you use a type 51 custom action it doesn't call MsiSetTargetPath because you've told it you are setting a property and not a directory. Try using a type 35 custom action (after CostFinalize) by using the Directory attribute instead of Property. -- View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Dealing-with-IC E48-warning-tp6841665p6856559.html Sent from the wix-users mailing list archive at Nabble.com. - - All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu
Re: [WiX-users] Dealing with ICE48 warning
The subtle differences between the two are a bit beyond me since I've never needed to distinguish between them. There's a list of considerations at http://msdn.microsoft.com/en-us/library/aa367852%28v=VS.85%29.aspx which may answer your questions. It's worth trawling through the MSDN. For us, setting the property before CostInitialize has always worked. We use a setproperty action but setdirectory would work and should make slightly more sense. It probably helps matters that we don't use merge modules nor MSI UI so the directories are determined before the MSI even starts up and don't change during installation. There are setproperty and setdirectory elements in wix3.5 to more concisely express these kinds of custom action. The remote/local difference is somewhat strange, I agree, but I'm sure there's a good reason for it. A comparison of verbose logs may give you a clue. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 16:57 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks, Peter... I can give it a shot. I was a bit perplexed when I found that the Type 51 approach worked as I expected when it installed remotely through WMI, as opposed to being run locally on the computer. By and large our ops team uses a utility to manage the farm and the installs are run remotely; the difference in behavior just annoyed me. Just out of curiosity, if I switch to using INSTALLDIR instead, does it make a difference whether I use the Type 51 or the type 35 custom actions to set it? And at which phase? I googled around and found a few posts advocating the type 51 approach Before CostFinalize, now some saying type 35 after. I'm wondering if just avoiding the specific case of TARGETDIR would push one way or the other? Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 11:45 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning I've just looked back at your original post which is how to avoid ICE48 errors. The ICE48 error is issued because ... ICE48 checks for directories that are hard-coded to local paths in the Property table. (From http://msdn.microsoft.com/en-us/library/windows/desktop/aa368977%28v=vs.85%29 .aspx) ICE48 is objecting to the use of C:\OurPath\ TARGETDIR is by default set to the root of the drive with the most free space (I think). Some of the other components, probably in the merge modules, might have directory paths rooted under a well known directory property like ProgramFilesFolder which overrides the TARGETDIR, even though they appear underneath TARGETDIR. I'm not entirely sure how to fix it to work exactly how you have it currently but I can give some info that might help. The usual pattern for having a retargetable installation is to set up the default in the directory elements and then make the installation directory a public directory property, in this case, INSTALLDIR. Directory Id=TARGETDIR Name=SourceDir Directory Id=ProgramFilesFolder Directory Id=CompanyDir Name=IniTech Directory Id=INSTALLDIR Name=Product v1 ..components... Then you can set the value of INSTALLDIR (or whatever you call it) to some other value on the command line or leave it to get the default. Note that the built-in directory property ProgramFilesFolder will override whatever TARGETDIR is set to unless youre performing an admin installation. If INSTALLDIR is defined as an absolute path, that will in turn override [ProgramFilesFolder]\InitTech. You might be able to get this to work with TARGETDIR but since Windows Installer itself will set the value of it, it's easier to define your own property and use that: in this case INSTALLDIR. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 16:00 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning I was wondering maybe *before* CostFinalize? I'm just grasping around here... -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 10:24 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Could it be the file's encoding ? Declared as UTF-8 but written in something else maybe ? -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 15:17 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks for the response... I tried replacing my type 51 with CustomAction Id=SetTarget Directory=TARGETDIR Value=C:\OurPath\ / After CostFinalize, but now I get an error The folder path '?' contains an invalid character when I run
Re: [WiX-users] Dealing with ICE48 warning
Hi Peter... It was a bit of a nuisance to get a verbose log out of the wmi install, so I've been comparing the logs from the builds using the type 51 and type 35 work-arounds vs the builds just ignoring the error. The differences I see is that TARGETDIR=my custom value in the early phases of all logs, but in the ones with the type 51 and type 35 work-arounds TARGETDIR just doesn't appear to be used in coming up with the final destination for some of the merge modules. Why? I don't know. E.g. Action ended 17:14:01: INSTALL. Return value 1. Property(C): Binaries = C:\OurPath\Binaries\ Property(C): TARGETDIR = C:\OurPath\ Property(C): ASP = C:\OurPath\ASP\ Property(C): Ptt = C:\OurPath\Ptt\ In the log when I just ignore the warning compared to Action ended 15:27:12: INSTALL. Return value 1. Property(S): Binaries = C:\OurPath\Binaries\ Property(S): TARGETDIR = C:\OurPath\ Property(S): ASP = C:\ASP\ Property(S): Ptt = C:\OurPath\Ptt\ In the log when I'm trying one of the other approaches. On your other suggestions, I found a few things: 1) Can't put a type 35 anywhere before after CostFinalize. It throws an error at any stage before. 2) I tried putting my own directory level (e.g. Directory Id=PRODUCTDIR Name=Ice48 Stub.../Directory) just inside of TARGETDIR, but using a type 51 CA Before=CostInitialize still had the same problem of pretty random directory placement. Specifically, it put things in C:\Ice48 Stub\... 3) Same as #2 but going back to type 35 after CostFinalize appeared to do the trick. Things got installed where I expected when running the msi locally. Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 12:10 PM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning The subtle differences between the two are a bit beyond me since I've never needed to distinguish between them. There's a list of considerations at http://msdn.microsoft.com/en-us/library/aa367852%28v=VS.85%29.aspx which may answer your questions. It's worth trawling through the MSDN. For us, setting the property before CostInitialize has always worked. We use a setproperty action but setdirectory would work and should make slightly more sense. It probably helps matters that we don't use merge modules nor MSI UI so the directories are determined before the MSI even starts up and don't change during installation. There are setproperty and setdirectory elements in wix3.5 to more concisely express these kinds of custom action. The remote/local difference is somewhat strange, I agree, but I'm sure there's a good reason for it. A comparison of verbose logs may give you a clue. -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: 04 October 2011 16:57 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning Thanks, Peter... I can give it a shot. I was a bit perplexed when I found that the Type 51 approach worked as I expected when it installed remotely through WMI, as opposed to being run locally on the computer. By and large our ops team uses a utility to manage the farm and the installs are run remotely; the difference in behavior just annoyed me. Just out of curiosity, if I switch to using INSTALLDIR instead, does it make a difference whether I use the Type 51 or the type 35 custom actions to set it? And at which phase? I googled around and found a few posts advocating the type 51 approach Before CostFinalize, now some saying type 35 after. I'm wondering if just avoiding the specific case of TARGETDIR would push one way or the other? Thanks Mark -Original Message- From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] Sent: Tuesday, October 04, 2011 11:45 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Dealing with ICE48 warning I've just looked back at your original post which is how to avoid ICE48 errors. The ICE48 error is issued because ... ICE48 checks for directories that are hard-coded to local paths in the Property table. (From http://msdn.microsoft.com/en-us/library/windows/desktop/aa368977%28v=vs.85%29 .aspx) ICE48 is objecting to the use of C:\OurPath\ TARGETDIR is by default set to the root of the drive with the most free space (I think). Some of the other components, probably in the merge modules, might have directory paths rooted under a well known directory property like ProgramFilesFolder which overrides the TARGETDIR, even though they appear underneath TARGETDIR. I'm not entirely sure how to fix it to work exactly how you have it currently but I can give some info that might help. The usual pattern for having a retargetable installation is to set up the default in the directory elements and then make the installation directory a public directory property, in this case, INSTALLDIR. Directory Id
Re: [WiX-users] Dealing with ICE48 warning
Okay, now this is getting strange and I hope someone can help me figure out what's going on here... I just discovered that having a type 51 custom action to set TARGETDIR puts half the directories in the wrong place when I copy the msi to a machine and run it locally. When I copy the msi to the machine and run it remotely through WMI, the directories are put in the right place. So when I *thought* I'd resolved it by moving the CA from Before=CostInitialize to Before=CostFinalize it would appear the bigger difference was running the msi through our little utility using WMI instead of running it manually on the spot. So again, anyone have any clue why running the msi locally with TARGETDIR set in a custom action would result in the directories being placed in the wrong spots? And why running the same msi through WMI would put them in the right places? Thanks Mark -Original Message- From: Mark Modrall [mailto:mmodrall@...] Sent: Wednesday, September 28, 2011 3:57 PM To: General discussion for Windows Installer XML toolset. Subject: [WiX-users] Dealing with ICE48 warning Hi... Our installers are used internally to install to a farm, so we had Property Id=TARGETDIR Value=C:\OurPath / In our old Wix 2.0 scripts. We recently updated to Wix 3.5, and I started getting ICE48 warnings. I googled around on how to do this properly, and I found some posts about moving the definition of the target directory to a custom action at an early stage. So I replaced the definition above with Custom Action=SetTarget Before=CostInitialize / Custom Action=InstallConfig Before=InstallFinalizeNOT Installed/Custom /InstallExecuteSequence CustomAction Id=SetTarget Property=TARGETDIR Value=C:\OurPath\ / CustomAction Id=InstallConfig Impersonate=no Return=check Execute=deferred FileKey=InstallConfig.exe ExeCommand=[TARGETDIR] / That did get rid of the warning, but now when I run the installers produced most of the subdirectories end up at C:\ instead - except for a couple which end up in the right place for reasons I haven't figured out. For example, my main msi wxs file has Directory Id=TARGETDIR Name=SourceDir Directory Id=Binaries Name=Binaries Merge Id=PTCoreModule Language=1033 SourceFile=..\PTCoreModule\bin\Release\PTCoreModule.msm DiskId=1 / ... Component Id=InstallConfig Guid=D746C5C0-12CB-4d4a-AA65-361D578F09F5 File Id='InstallConfig.exe' Name='InstallConfig.exe' DiskId='1' Source='..\InstallConfig\bin\Release\InstallConfig.exe' Vital='yes' / File Id='InstallConfig.pdb' Name='InstallConfig.pdb' DiskId='1' Source='..\InstallConfig\bin\Release\InstallConfig.pdb' / /Component /Directory Directory Id=ASP Name=ASP Merge Id=AspModule Language=1033 SourceFile=..\AspModule\bin\Release\AspModule.msm DiskId=1 / /Directory Directory Id=Ptt Name=Ptt Merge Id=PttModule Language=1033 SourceFile=..\PttModule\bin\Release\PttModule.msm DiskId=1 / /Directory /Directory The Component under Binaries ends up in C:\OurPath\Binaries\InstallConfig.exe, but PTCore's contents end up in C:\Binaries. The AspModule ends up in C:\ASP\, but PttModule ends up in C:\OurPath\Ptt. So a) did I just pick the wrong way to deal with ICE 48? Or more importantly, what did I do wrong? b) What's the right way? c) Any guesses why some directories would seem to work and others not? Seems like I should just live with the warnings until I figure out how to do it right... Thanks mark -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Dealing with ICE48 warning
When you use a type 51 custom action it doesn't call MsiSetTargetPath because you've told it you are setting a property and not a directory. Try using a type 35 custom action (after CostFinalize) by using the Directory attribute instead of Property. -- View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Dealing-with-ICE48-warning-tp6841665p6856559.html Sent from the wix-users mailing list archive at Nabble.com. -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] Dealing with ICE48 warning
I re-read some of the posts I found on Google, and in them they say to move the custom action to before CostFinalize where I had before CostInitialize. I made the change, and it worked. Not clear why it seemed to work partially when done before CostInitialize, though. Thanks Mark -Original Message- From: Mark Modrall [mailto:mmodr...@mzinga.com] Sent: Wednesday, September 28, 2011 3:57 PM To: General discussion for Windows Installer XML toolset. Subject: [WiX-users] Dealing with ICE48 warning Hi... Our installers are used internally to install to a farm, so we had Property Id=TARGETDIR Value=C:\OurPath / In our old Wix 2.0 scripts. We recently updated to Wix 3.5, and I started getting ICE48 warnings. I googled around on how to do this properly, and I found some posts about moving the definition of the target directory to a custom action at an early stage. So I replaced the definition above with Custom Action=SetTarget Before=CostInitialize / Custom Action=InstallConfig Before=InstallFinalizeNOT Installed/Custom /InstallExecuteSequence CustomAction Id=SetTarget Property=TARGETDIR Value=C:\OurPath\ / CustomAction Id=InstallConfig Impersonate=no Return=check Execute=deferred FileKey=InstallConfig.exe ExeCommand=[TARGETDIR] / That did get rid of the warning, but now when I run the installers produced most of the subdirectories end up at C:\ instead - except for a couple which end up in the right place for reasons I haven't figured out. For example, my main msi wxs file has Directory Id=TARGETDIR Name=SourceDir Directory Id=Binaries Name=Binaries Merge Id=PTCoreModule Language=1033 SourceFile=..\PTCoreModule\bin\Release\PTCoreModule.msm DiskId=1 / ... Component Id=InstallConfig Guid=D746C5C0-12CB-4d4a-AA65-361D578F09F5 File Id='InstallConfig.exe' Name='InstallConfig.exe' DiskId='1' Source='..\InstallConfig\bin\Release\InstallConfig.exe' Vital='yes' / File Id='InstallConfig.pdb' Name='InstallConfig.pdb' DiskId='1' Source='..\InstallConfig\bin\Release\InstallConfig.pdb' / /Component /Directory Directory Id=ASP Name=ASP Merge Id=AspModule Language=1033 SourceFile=..\AspModule\bin\Release\AspModule.msm DiskId=1 / /Directory Directory Id=Ptt Name=Ptt Merge Id=PttModule Language=1033 SourceFile=..\PttModule\bin\Release\PttModule.msm DiskId=1 / /Directory /Directory The Component under Binaries ends up in C:\OurPath\Binaries\InstallConfig.exe, but PTCore's contents end up in C:\Binaries. The AspModule ends up in C:\ASP\, but PttModule ends up in C:\OurPath\Ptt. So a) did I just pick the wrong way to deal with ICE 48? Or more importantly, what did I do wrong? b) What's the right way? c) Any guesses why some directories would seem to work and others not? Seems like I should just live with the warnings until I figure out how to do it right... Thanks mark -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] Dealing with ICE48 warning
Hi... Our installers are used internally to install to a farm, so we had Property Id=TARGETDIR Value=C:\OurPath / In our old Wix 2.0 scripts. We recently updated to Wix 3.5, and I started getting ICE48 warnings. I googled around on how to do this properly, and I found some posts about moving the definition of the target directory to a custom action at an early stage. So I replaced the definition above with Custom Action=SetTarget Before=CostInitialize / Custom Action=InstallConfig Before=InstallFinalizeNOT Installed/Custom /InstallExecuteSequence CustomAction Id=SetTarget Property=TARGETDIR Value=C:\OurPath\ / CustomAction Id=InstallConfig Impersonate=no Return=check Execute=deferred FileKey=InstallConfig.exe ExeCommand=[TARGETDIR] / That did get rid of the warning, but now when I run the installers produced most of the subdirectories end up at C:\ instead - except for a couple which end up in the right place for reasons I haven't figured out. For example, my main msi wxs file has Directory Id=TARGETDIR Name=SourceDir Directory Id=Binaries Name=Binaries Merge Id=PTCoreModule Language=1033 SourceFile=..\PTCoreModule\bin\Release\PTCoreModule.msm DiskId=1 / ... Component Id=InstallConfig Guid=D746C5C0-12CB-4d4a-AA65-361D578F09F5 File Id='InstallConfig.exe' Name='InstallConfig.exe' DiskId='1' Source='..\InstallConfig\bin\Release\InstallConfig.exe' Vital='yes' / File Id='InstallConfig.pdb' Name='InstallConfig.pdb' DiskId='1' Source='..\InstallConfig\bin\Release\InstallConfig.pdb' / /Component /Directory Directory Id=ASP Name=ASP Merge Id=AspModule Language=1033 SourceFile=..\AspModule\bin\Release\AspModule.msm DiskId=1 / /Directory Directory Id=Ptt Name=Ptt Merge Id=PttModule Language=1033 SourceFile=..\PttModule\bin\Release\PttModule.msm DiskId=1 / /Directory /Directory The Component under Binaries ends up in C:\OurPath\Binaries\InstallConfig.exe, but PTCore's contents end up in C:\Binaries. The AspModule ends up in C:\ASP\, but PttModule ends up in C:\OurPath\Ptt. So a) did I just pick the wrong way to deal with ICE 48? Or more importantly, what did I do wrong? b) What's the right way? c) Any guesses why some directories would seem to work and others not? Seems like I should just live with the warnings until I figure out how to do it right... Thanks mark -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users