There is a collection of standard properties that Windows Installer supplies:
http://msdn.microsoft.com/en-us/library/aa370905(v=vs.85).aspx about the system, the install state, standard folders etc. --------------- Phil Wilson On Sun, Dec 7, 2014 at 6:59 AM, Sarvagya Pant <sarvagya.p...@gmail.com> wrote: > Yes this worked. Thank you. Yet there was another solution given to me on > stackoverflow. I could use session["LocalAppDataFolder"] in my code to get > directly the value. I could not get how the LocalAppDataFolder is being > accessed as property even though I haven't passed it. Is there any > reference on this? > > On Sun, Dec 7, 2014 at 8:25 PM, Sean Hall <r.sean.h...@gmail.com> wrote: > >> You need to remove the CustomAction attribute from the SHGetFolderPath >> method and put it on your WriteFileToDisk method. >> >> On Sun, Dec 7, 2014 at 6:06 AM, Sarvagya Pant <sarvagya.p...@gmail.com> >> wrote: >> >> > I have been making a MSI Installer that can get the value of property >> > passed to it and write a Config file. I am supposed to call MSI as: >> > >> > msiexec /i myfile.msi /l*v output.txt IPADDRESS="192.168.1.1" >> > >> > and get value of IPADDRESS >> > >> > I have following Wix C# Code that is supposed to work >> > >> > namespace SetupCA >> > { >> > >> > public class CustomActions >> > { >> > >> > [CustomAction] >> > [DllImport("shell32.dll")] >> > public static extern Int32 SHGetFolderPath( >> > IntPtr hwndOwner, // Handle to an owner window. >> > Int32 nFolder, // A CSIDL value that identifies >> > the folder whose path is to be retrieved. >> > IntPtr hToken, // An access token that can be >> used >> > to represent a particular user. >> > UInt32 dwFlags, // Flags to specify which path is >> > to be returned. It is used for cases where >> > // the folder associated with a CSIDL may be moved or renamed >> > by the user. >> > StringBuilder pszPath); >> > public static ActionResult WriteFileToDisk(Session session) >> > { >> > >> > session.Log("Begin WriteFileToDisk"); >> > >> > const int CSIDL_LOCAL_APPDATA = 0x001c; >> > StringBuilder path1 = new StringBuilder(256); >> > SHGetFolderPath(IntPtr.Zero, CSIDL_LOCAL_APPDATA, >> IntPtr.Zero, >> > 0, path1); >> > session.Log("LOCAL APP_DATA PATH " + path1.ToString()); >> > >> > string ipAddress = session["IPADDRESS"]; >> > string path = path1.Replace(@"\", @"\\").ToString(); >> > path = path + @"\\lpa\\config\\"; >> > session.Log("LOCAL APP_DATA PATH NOW MODIFIED " + >> > path.ToString()); >> > string temp = @" >> > {{ >> > ""logpoint_ip"" : ""{0}"" >> > }}"; >> > string config = string.Format(temp, ipAddress); >> > session.Log("Config Generated was " + config); >> > System.IO.Directory.CreateDirectory(path); >> > try >> > { >> > System.IO.File.Delete(path + "lpa.config"); >> > } >> > catch (Exception e) >> > { >> > session.Log(e.ToString()); >> > } >> > System.IO.File.WriteAllText(path + "lpa.config", config); >> > session.Log("Ending WriteFileToDisk"); >> > >> > return ActionResult.Success; >> > } >> > } >> > } >> > >> > The above code is supposed to get the value of IPADDRESS and write a >> file >> > to the folder given by CSIDL_LOCAL_APPDATA . For this I used >> > SHGetFolderPath inside shell32.dll using DLLIMPORT. >> > >> > My Wix file is given below: >> > >> > <?xml version="1.0" encoding="UTF-8"?> >> > <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> >> > <Product Id="*" Name="CustomWixInstallerWithCustomAction" >> > Language="1033" Version="1.0.0.0" Manufacturer="LogPoint" >> > UpgradeCode="ba9015b9-027f-4451-adb2-e38f9168a850"> >> > <Package InstallerVersion="200" Compressed="no" >> > InstallScope="perMachine" /> >> > >> > <MajorUpgrade DowngradeErrorMessage="A newer version of >> > [ProductName] is already installed." /> >> > <MediaTemplate /> >> > >> > <Feature Id="ProductFeature" >> > Title="CustomWixInstallerWithCustomAction" Level="1"> >> > <ComponentGroupRef Id="ProductComponents" /> >> > </Feature> >> > </Product> >> > >> > <Fragment> >> > <Directory Id="TARGETDIR" Name="SourceDir"> >> > <Directory Id="ProgramFilesFolder"> >> > <Directory Id="INSTALLFOLDER" Name="CustomWixInstaller" >> /> >> > </Directory> >> > </Directory> >> > </Fragment> >> > >> > <Fragment> >> > <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> >> > <Component Id="SomeRandomEXE"> >> > <File Source >> > >> ="G:\SarVaGYa\myworkspace\LatestLpa\lpa\lpa_c\here\src\lpa\Release\lpa.exe" >> > /> >> > </Component> >> > </ComponentGroup> >> > <Binary Id="SetupCA" SourceFile="G:\visual studio >> > stuffs\SetupCA\SetupCA\bin\Release\SetupCA.CA.dll"/> >> > <CustomAction Id="WRITEFILETODISK" Execute="immediate" >> > BinaryKey="SetupCA" DllEntry="WriteFileToDisk" /> >> > <InstallExecuteSequence> >> > <Custom Action="WRITEFILETODISK" Sequence="2"></Custom> >> > </InstallExecuteSequence> >> > </Fragment> >> > </Wix> >> > >> > Both get compiled but when I try to install the MSI using the command I >> > wrote above I get the following error: >> > >> > "There is a problem with this Windows Installer package. A DLL required >> for >> > this install to complete could not be run. " >> > >> > How do I solve this Issue? Can't I use DLLImport in Wix C# Custom >> Action. >> > >> > >> ------------------------------------------------------------------------------ >> > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server >> > from Actuate! Instantly Supercharge Your Business Reports and Dashboards >> > with Interactivity, Sharing, Native Excel Exports, App Integration & more >> > Get technology previously reserved for billion-dollar corporations, FREE >> > >> > >> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk >> > _______________________________________________ >> > WiX-users mailing list >> > WiX-users@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/wix-users >> > >> >> ------------------------------------------------------------------------------ >> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server >> from Actuate! Instantly Supercharge Your Business Reports and Dashboards >> with Interactivity, Sharing, Native Excel Exports, App Integration & more >> Get technology previously reserved for billion-dollar corporations, FREE >> >> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk >> _______________________________________________ >> WiX-users mailing list >> WiX-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wix-users >> > > > > -- > *sarvagya* > ------------------------------------------------------------------------------ > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server > from Actuate! Instantly Supercharge Your Business Reports and Dashboards > with Interactivity, Sharing, Native Excel Exports, App Integration & more > Get technology previously reserved for billion-dollar corporations, FREE > http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users