The proper way is RemoveFile. Windows Installer supplies these things
so you don't need to write code and get yourself in this kind of
trouble :)
---------------
Phil Wilson


On Wed, Feb 4, 2015 at 7:47 PM, Sarvagya Pant <sarvagya.p...@gmail.com> wrote:
> Hi Phil and Jacob. One approach I could do is create another function in
> Custom action that will attempt to remove the residual files during
> uninstall. ie:
> [CustomAction]
>         public static ActionResult ClearLeftOvers(Session session)
>         {
>             session.Log("Call of ClearLeftOvers");
>             string conf = "C:\\lpaa";
>             try
>             {
>                 System.IO.Directory.Delete(conf, true);
>             }
>             catch (Exception e)
>             {
>                 session.Log("ClearLeftOvers Directory Deletion Exception: "
> + e.ToString());
>             }
>             session.Log("Deletion of Leftovers");
>             return ActionResult.Success;
>         }
>
> and in wix
> <Binary Id="SetupCA"  SourceFile="G:\visual studio
> stuffs\SetupCA\SetupCA\bin\Release\SetupCA.CA.dll"/>
>     <CustomAction Id="WRITEFILETODISK" Execute="immediate"
> BinaryKey="SetupCA" DllEntry="WriteFileToDisk" />
>     <CustomAction Id="ClearLeftOvers" Execute="immediate"
> BinaryKey="SetupCA" DllEntry="ClearLeftOvers" />
>     <InstallExecuteSequence>
>       <Custom Action="WRITEFILETODISK" Before="InstallFinalize">NOT
> REMOVE</Custom>
>       <Custom Action="ClearLeftOvers"
> Before="InstallFinalize">REMOVE~="ALL"</Custom>
>     </InstallExecuteSequence>
>
> Is this approach good to go? If not I would use Jacob's idea of using
> RemoveFile. And Phil the default value of Execute is "Immediate" as the doc
> says. If I implement "Deferred", I should also define "Rollback" too isn't
> it? Can you pinpoint the difference between these two. The doc seems vague
> to me.
> Thanks
>
> On Thu, Feb 5, 2015 at 1:17 AM, Phil Wilson <phildgwil...@gmail.com> wrote:
>
>> That looks like an immediate custom action, and that's:
>> 1. Something you shouldn't do as an immediate custom action. If you
>> really really need to do that, take heed of Jacob's advice, but make
>> it deferred and add a rollback custom action to undo all that in case
>> the install fails.
>>
>> 2. Immediate custom actions are not elevated (even if the installing
>> user is an admin). That's most likely the reason why you can't write
>> to that location.
>> ---------------
>> Phil Wilson
>>
>>
>> On Wed, Feb 4, 2015 at 6:48 AM, Hoover, Jacob
>> <jacob.hoo...@greenheck.com> wrote:
>> > Is the file/directory in use when the delete was attempted?  Is there a
>> reason you have to delete the file instead of just overwriting it?  Have
>> you pondered using a RemoveFile element to explicitly remove the files you
>> are creating in your CA on uninstall?
>> >
>> > -----Original Message-----
>> > From: Sarvagya Pant [mailto:sarvagya.p...@gmail.com]
>> > Sent: Wednesday, February 04, 2015 1:25 AM
>> > To: General discussion about the WiX toolset.
>> > Subject: [WiX-users] Custom action
>> "System.IO.DirectoryNotFoundException" on second Installation
>> >
>> > I have been making a Wix Installer that is supposed to install the
>> contents and fetches the parameters passed in terminal and create files. ie.
>> > msiexec /i installer.msi /l*v out.log IPADDRESS="1.1.1.1" will create a
>> file lpa.config.
>> >
>> > I have following wix file and custom action file.
>> >
>> > WIX:
>> > <?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="yes"
>> > InstallScope="perMachine" />
>> >
>> >         <MajorUpgrade DowngradeErrorMessage="A newer version of
>> [ProductName] is already installed." />
>> >         <MediaTemplate EmbedCab="yes" />
>> >
>> >         <Feature Id="ProductFeature"
>> > Title="CustomWixInstallerWithCustomAction" Level="1">
>> >             <ComponentGroupRef Id="ProductComponents" />
>> >         </Feature>
>> >     </Product>
>> >
>> >     <Fragment>
>> >         <Directory Id="TARGETDIR" Name="SourceDir">
>> >             <Directory Id="WindowsVolume">
>> >                 <Directory Id="INSTALLFOLDER" Name="lpaa" />
>> >             </Directory>
>> >         </Directory>
>> >     </Fragment>
>> >
>> >     <Fragment>
>> >         <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
>> >       <Component Id="SomeRandomEXE">
>> >         <File Source
>> >
>> ="G:\SarVaGYa\myworkspace\LatestLpa\lpa\lpa_c\build_win\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">NOT Installed AND
>> NOT PATCH</Custom>
>> >     </InstallExecuteSequence>
>> >     </Fragment>
>> > </Wix>
>> >
>> > and the Custom Action File
>> >
>> > namespace SetupCA
>> > {
>> >
>> >     public class CustomActions
>> >     {
>> >
>> >         [CustomAction]
>> >         public static ActionResult WriteFileToDisk(Session session)
>> >         {
>> >
>> >             session.Log("Entering WriteFileToDisk");
>> >             string ipAddress = session["IPADDRESS"];
>> >             string productCode = session["ProductCode"];
>> >             string ssl = session["SSL"];
>> >             string compression = session["COMP"];
>> >             string config_path = "C:\\lpaa\\";
>> >             string temp = @"
>> > {{
>> >  ""logpoint_ip"" : ""{0}"",
>> > ""ssl"" : ""{1}"",
>> > ""compression"" : ""{2}""
>> > }}";
>> >             if (string.IsNullOrEmpty(ssl))
>> >             {
>> >                 ssl = "False";
>> >             }
>> >             if (string.IsNullOrEmpty(compression))
>> >             {
>> >                 compression = "True";
>> >             }
>> >             string config = string.Format(temp,
>> ipAddress,ssl,compression);
>> >             session.Log("Config Generated from property is: " + config);
>> >             try
>> >             {
>> >                 System.IO.Directory.Delete(config_path, true);
>> //Recursive delete content inside LogPointAgent Folder
>> >             }
>> >             catch (Exception e)
>> >             {
>> >                 session.Log("LogPointAgent Directory Deletion
>> Unsuccessful.
>> > Exception: " + e.ToString());
>> >             }
>> >             try
>> >             {
>> >                 System.IO.Directory.CreateDirectory(config_path);
>> >             }
>> >             catch (Exception e)
>> >             {
>> >                 session.Log("LogPointAgent Directory Creation
>> Unsuccessful.
>> > Exception: " + e.ToString());
>> >             }
>> >
>> >             //try
>> >             //{
>> >             //    System.IO.File.Delete(config_path + "lpa.config");
>> >             //}
>> >             //catch (Exception e)
>> >             //{
>> >             //    session.Log("Config File Deletion Unsuccessful
>> Exception:
>> > " + e.ToString());
>> >             //}
>> >             try
>> >             {
>> >                 System.IO.File.WriteAllText(config_path + "lpa.config",
>> config);
>> >             }
>> >             catch (Exception e)
>> >             {
>> >                 session.Log("Config File Writing Unsuccessful.
>> Exception: "
>> > + e.ToString());
>> >             }
>> >             try
>> >             {
>> >                 System.IO.File.WriteAllText(config_path +
>> "productcode.txt", productCode);
>> >             }
>> >             catch (Exception e)
>> >             {
>> >                 session.Log("Product Code Writing Unsuccessful.
>> Exception:
>> > " + e.ToString());
>> >             }
>> >             session.Log("Confile file is written");
>> >             session.Log("Product Code file is written");
>> >             return ActionResult.Success;
>> >         }
>> >     }
>> > }
>> >
>> > The installer works fine when it is freshly installed but if I uninstall
>> it, it will have residues productcode.txt and lpa.config as it was not
>> installed by installer. If after uninstalling and installing it again, it
>> doesn't create  these files. If looked in the out.log file, it will get
>> > exception:
>> > Config File Writing Unsuccessful. Exception:
>> > System.IO.DirectoryNotFoundException: Could not find a part of the path
>> 'C:\lpaa\lpa.config'.
>> >    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
>> >    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess
>> access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize,
>> FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean
>> bFromProxy, Boolean useLongPath, Boolean checkHost)
>> >    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
>> access, FileShare share, Int32 bufferSize, FileOptions options, String
>> msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
>> >    at System.IO.StreamWriter.CreateFile(String path, Boolean append,
>> Boolean checkHost)
>> >    at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding
>> encoding, Int32 bufferSize, Boolean checkHost)
>> >    at System.IO.File.InternalWriteAllText(String path, String contents,
>> Encoding encoding, Boolean checkHost)
>> >    at System.IO.File.WriteAllText(String path, String contents)
>> >    at SetupCA.CustomActions.WriteFileToDisk(Session session)
>> >
>> >
>> > How to solve this issue?
>> >
>> > --
>> > *sarvagya*
>> >
>> ------------------------------------------------------------------------------
>> > Dive into the World of Parallel Programming. The Go Parallel Website,
>> sponsored by Intel and developed in partnership with Slashdot Media, is
>> your hub for all things parallel software development, from weekly thought
>> leadership blogs to news, videos, case studies, tutorials and more. Take a
>> look and join the conversation now. http://goparallel.sourceforge.net/
>> > _______________________________________________
>> > WiX-users mailing list
>> > WiX-users@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/wix-users
>> >
>> ------------------------------------------------------------------------------
>> > Dive into the World of Parallel Programming. The Go Parallel Website,
>> > sponsored by Intel and developed in partnership with Slashdot Media, is
>> your
>> > hub for all things parallel software development, from weekly thought
>> > leadership blogs to news, videos, case studies, tutorials and more. Take
>> a
>> > look and join the conversation now. http://goparallel.sourceforge.net/
>> > _______________________________________________
>> > WiX-users mailing list
>> > WiX-users@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>>
>> ------------------------------------------------------------------------------
>> Dive into the World of Parallel Programming. The Go Parallel Website,
>> sponsored by Intel and developed in partnership with Slashdot Media, is
>> your
>> hub for all things parallel software development, from weekly thought
>> leadership blogs to news, videos, case studies, tutorials and more. Take a
>> look and join the conversation now. http://goparallel.sourceforge.net/
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>
>
>
> --
> *sarvagya*
> ------------------------------------------------------------------------------
> Dive into the World of Parallel Programming. The Go Parallel Website,
> sponsored by Intel and developed in partnership with Slashdot Media, is your
> hub for all things parallel software development, from weekly thought
> leadership blogs to news, videos, case studies, tutorials and more. Take a
> look and join the conversation now. http://goparallel.sourceforge.net/
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to