Hello,
I have a simple VS2010 C# project that consists of:-
ISOTest.exe - The only assembly representing the main application which is
installed in the ProgramFiles folder using WIX. This has a public class:-
public class ExposeIsolatedStorage
{
public static IsolatedStorageFile GetIsolatedStorage()
{
return IsolatedStorageFile.GetMachineStoreForAssembly();
}
}
A "RemotingConfig.xml" file which will be copied to the ISO area by the C#
Custom Action. A shortcut to this ISOTest project file is included in the C#
Custom Action project.
A C# Custom Action which has one method:-
namespace CustomAction
{
public class CustomActions
{
[CustomAction]
public static ActionResult CreateServerConfig(Session session)
{
session.Log("Start CustomAction CreateServerConfig()");
IsolatedStorageFileStream isoFileStream = null;
IsolatedStorageFile store = null;
try
{
// Get Isolated storage for ISOTest assembly which is the
installing application exe.
store = ISOTest.ExposeIsolatedStorage.GetIsolatedStorage();
isoFileStream = new
IsolatedStorageFileStream("RemotingConfig.xml", FileMode.Create, store);
// Display ISOTest Assembly identity.
MessageBox.Show("CustomAction CreateServerConfig(): " +
store.AssemblyIdentity.ToString());
session.Log("CustomAction CreateServerConfig():-\r\n " +
store.AssemblyIdentity.ToString());
if (File.Exists("RemotingConfig.xml"))
{
XDocument doc = XDocument.Load("RemotingConfig.xml");
doc.Save(isoFileStream);
MessageBox.Show("Project xml File found and copied to
isolated storage");
}
else
{
MessageBox.Show("Project xml File not found");
}
}
catch (Exception ex)
{
MessageBox.Show("CustomAction CreateServerConfig()",
ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (isoFileStream != null)
{
isoFileStream.Close();
}
}
session.Log("End CustomAction CreateServerConfig()");
return ActionResult.Success;
}
}
}
The WIX xml portion:-
<Binary Id="CustomActionsDLL"
SourceFile="$(var.CustomAction.TargetDir)CustomAction.CA.dll"/>
<CustomAction Id="CA_CreateServerConfig" BinaryKey="CustomActionsDLL"
DllEntry="CreateServerConfig" Execute="immediate" Return="check"/>
<InstallExecuteSequence>
<Custom Action="CA_CreateServerConfig" Before="InstallFinalize">NOT
INSTALLED</Custom>
</InstallExecuteSequence>
This works perfectly for a VS2010 DEBUG build with the ISO store being created
using the C# Custom Action. When the installed application is executed it
accesses the same ISO created during installation. (This is verified by looking
at the assembly identity message box prompts in the C# Custom Action).
The problem is after a VS2010 RELEASE build that this fails with the C# Custom
Action creating its own ISO. This consequently results in the ISOTest
application creating another ISO area which obviously does not contain the
RemotingConfig.xml file.
Both C# assemblies are strongly typed in VS using the same .snk file.
The idea was to have the installer create an ISO area and then copy a
config.xml (remoting object configuration) to that location which can then be
accessed by the application. A further C# Custom Action method will then be
used to delete this ISO area during an uninstall. The target platforms are
Windows 7 and 2008 Server.
This will only work when doing a VS DEBUG build. I would really appreciate some
advice here as I've trawled the web to find an answer, with no luck.
Cheers,
Paul
--
Scanned by iCritical.
------------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users