Re: [WiX-users] ModuleInstallExecuteSequence not being merged into msi

2008-03-25 Thread Geoff Finger
That was in fact the problem, thanks!

On Sat, Mar 22, 2008 at 11:42 AM, Bob Arnson [EMAIL PROTECTED] wrote:
 Geoff Finger wrote:
   In the ModuleInstallExecuteSequence table of the msm files we have rows 
 such as:
  
   Action: RemoveOldDriver.B391C18A_6953_11D4_82CB_00D0B72E1DB9
   Sequence:
   BaseAction: CostInitialize
   After: 0
   Condition: INSTALLCONDITION=1
  

  Does the ModuleInstallExecuteSequence table in the .msm also have a row
  for CostInitialize? Mergemod.dll requires merge modules to be
  self-contained in how they schedule actions. See the
  ModuleInstallExecuteSequence table doc in the MSI SDK for an explanation
  -- even if it's a lame one.g Try using smoke.exe to run validation on
  the merge module; it might provide details about problems that lead to a
  fix.

  --
  sig://boB
  http://joyofsetup.com/




-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Changing an installation in Add/Remove fails if msi is missing

2008-03-25 Thread Geoff Finger
If we run our installation and then delete the msi when we're done,
uninstalling the program through add/remove works but selecting the
Change option fails. First it pops up the The feature you are trying
to use is on a network resource that is unavailable dialog, and if we
cancel out of that it generates a 1706 error.

I turned on automatic logging but don't see any obvious problems. I'm
not sure what's triggering the ResolveSource action that causes the
problem. Unless there's some specific error that's causing the problem
I need a way to make sure the msi is always available even if the user
gets rid of the original copy.

The person who handles the older InstallAware msi's says that they
have an web install option they can set that will make sure the
whole msi gets cached in Windows\Installer. Are there any similar
options in Wix, either for individual components or the whole msi?

The other alternative I'm considering is copying the entire msi to the
target folder during installation, but that seems rather awkward and I
haven't figure out what registry setting I'd need to fix to get
Add/Remove Programs to look for the msi in the new location.

The relevant section from the automatic log (as best as I can tell anyways):

Action ended 13:23:44: CostFinalize. Return value 1.
MSI (c) (58:4C) [13:23:44:451]: Doing action: setUserProfileNT
Action 13:23:44: setUserProfileNT.
Action start 13:23:44: setUserProfileNT.
MSI (c) (58:4C) [13:23:44:451]: PROPERTY CHANGE: Modifying USERPROFILE
property. Its current value is 'C:\Program Files
(x86)\Laserfiche\Server\'. Its new value: 'C:\Documents and
Settings\gfinger'.
Action ended 13:23:44: setUserProfileNT. Return value 1.
MSI (c) (58:4C) [13:23:44:451]: Skipping action: SetAllUsersProfileNT
(condition is false)
MSI (c) (58:4C) [13:23:44:451]: Doing action: setAllUsersProfile2K
Action 13:23:44: setAllUsersProfile2K.
Action start 13:23:44: setAllUsersProfile2K.
MSI (c) (58:4C) [13:23:44:451]: PROPERTY CHANGE: Modifying
ALLUSERSPROFILE property. Its current value is 'C:\Program Files
(x86)\Laserfiche\Server\'. Its new value: 'C:\Documents and
Settings\All Users'.
Action ended 13:23:44: setAllUsersProfile2K. Return value 1.
MSI (c) (58:4C) [13:23:44:451]: Doing action: ResolveSource
Action 13:23:44: ResolveSource.
Action start 13:23:44: ResolveSource.
MSI (c) (58:4C) [13:23:44:451]: Resolving source.
MSI (c) (58:4C) [13:23:44:451]: User policy value 'SearchOrder' is 'nmu'
MSI (c) (58:4C) [13:23:44:451]: User policy value 'DisableMedia' is 0
MSI (c) (58:4C) [13:23:44:451]: Machine policy value 'AllowLockdownMedia' is 0
MSI (c) (58:4C) [13:23:44:451]: SOURCEMGMT: Media enabled only if
package is safe.
MSI (c) (58:4C) [13:23:44:451]: SOURCEMGMT: Looking for sourcelist for
product {Product-ID}
MSI (c) (58:4C) [13:23:44:451]: SOURCEMGMT: Adding {Product-ID}; to
potential sourcelist list (pcode;disk;relpath).
MSI (c) (58:4C) [13:23:44:451]: SOURCEMGMT: Now checking product {Product-ID}
MSI (c) (58:4C) [13:23:44:451]: SOURCEMGMT: Media is enabled for product.
MSI (c) (58:4C) [13:23:44:451]: SOURCEMGMT: Attempting to use
LastUsedSource from source list.
MSI (c) (58:4C) [13:23:44:451]: SOURCEMGMT: Trying source C:\Install\Server\.
MSI (c) (58:4C) [13:23:44:467]: Note: 1: 2203 2:
C:\Install\Server\server.msi 3: -2147287038
MSI (c) (58:4C) [13:23:44:467]: SOURCEMGMT: Source is invalid due to
missing/inaccessible package.
MSI (c) (58:4C) [13:23:44:467]: Note: 1: 1706 2: -2147483647 3: server.msi

Thanks!

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] SetTargetPath causes errors in remote installations. Is there an alternative?

2008-03-21 Thread Geoff Finger
Our installation needs to install SQLExpress under certain conditions,
and unfortunately we don't know what those condtions are until the
user has already gotten through the installation, so we can't run it
ahead of time through the setup.exe. After much experimentation I got
an ExeCommand custom action hooked up to the Finish button of the
ExitDialog page which runs the SQLExpress installer's setup.exe after
our own msi has finished.

This worked perfectly until people started trying to run the
installation remotely over a mapped network drive, at which point
whenever they hit Finish with the Sql installation box checked
they'd get Error 1315: Unable to write to the specified folder:
E:\Install\SQLEXPRESS\. and when they hit okay instead of exiting it
goes back to the final dialog page instead of exiting.

Since when I try double-clicking the setup.exe file at the same
location I get a Windows cannot access the specified device, path, or
file. You may not have the appropriate permissions to access the
item. error I'm sure there's no way to get the SQLExpress
installation to work under these conditions, but I'd like to be able
to have it fail gracefully.

Some research has indicated that the Publish Event SetTargetPath is
the problem, and if I remove it then the error goes away, but the
SQLExpress installation is no longer successfully run when the
installer is run from a local location either.

Is there anyway to get rid of the error with SetTargetPath or replace
it with something else that will work locally but fail silently
remotely?

Here's the relevant bits of code:

The custom action to actually run the setup.exe

CustomAction Id=InstallSqlExpress Directory=SQLEXPRESSDIR
ExeCommand='[SQLEXPRESSDIR]setup.exe -q /morebootchk /qb
reboot=ReallySuppress addlocal=all instancename=OURNAMESPACE
SCCCHECKLEVEL=IncompatibleComponents:1;MDAC25Version:0
ERRORREPORTING=1 SQLAUTOSTART=1 SAPWD=%1!s!
DISABLENETWORKPROTOCOLS=0 /l*v %2!s!' Return=asyncNoWait /

And the custom actions to set the location of the setup.exe (Using my
own custom action was the only way I could find to reference a
directory above the one which our own installer was running from.)

CustomAction Id=SetSqlExpressDir Execute=immediate
BinaryKey=mofc.dll DllEntry=SetSqlExpressDir /
CustomAction Id=SetSqlExpressDir.SetProperty Return=check
Property=SetSqlExpressDir Value=[SOURCEDIR] /


In the InstallUISequence we schedule two of the above actions:

Custom Action=SetSqlExpressDir.SetProperty
Before=ExecuteActionNOT Installed/Custom
Custom Action=SetSqlExpressDir
After=SetSqlExpressDir.SetPropertyNOT Installed/Custom


And in the ExitDialog we call the first CA when the Finish button is pressed:

Control Id=Finish Type=PushButton X=246 Y=242 Width=56
Height=17 Default=yes Cancel=yes Text=[ButtonText_Finish]
Publish Event=SetTargetPath Value=SQLEXPRESSDIR1/Publish
Publish Event=DoAction Value=InstallSqlExpress![CDATA[(NOT
Installed) AND InstallSqlExpressCheck AND (GROUP = 1) AND NOT
OURNAMESPACELOCATION]]/Publish
Publish Event=EndDialog Value=Return1/Publish
/Control

If the SetTargetPath event is removed then when we try to run it
locally clicking Finish causes it to exit properly but the SQLExpress
setup isn't run and the log shows:

Action 6:50:30: ExitDialog. Dialog created
MSI (c) (83:CD) [06:52:26:459]: Doing action: InstallSqlExpress
Action 6:52:26: InstallSqlExpress.
Action start 6:52:26: InstallSqlExpress.
Action ended 6:52:26: ExitDialog. Return value 1.
Action ended 6:52:26: INSTALL. Return value 1.
Action ended 6:52:26: InstallSqlExpress. Return value 1631.

Thanks!

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] ModuleInstallExecuteSequence not being merged into msi

2008-03-19 Thread Geoff Finger
I'm having some trouble getting a couple of 3rd party msm files to
work correctly. The original instructions said that along with
including the merge module we should also schedule several custom
actions in the msi. After that failed I looked around the archives and
found several threads saying that's not how it's supposed to work and
merge modules that require that are badly designed. (Of course I
already kind of suspected that when I discovered that all three of the
merge modules in the package had identical GUIDs with just one digit
switched between each of them =)

So we decided to edit the original merge modules with Install Shield
and insert the custom actions into the ModuleInstallExecuteSequence
tables. However when we rebuilt the msi we found the custom actions
still weren't getting called. When I opened the newly built msi with
Orca I found that the Custom Actions show up correctly in the
CustomAction table, but that no new rows are being merged into
InstallExecuteSequence.

Is there something special that needs to be done to get that to
happen? I didn't see any obvious errors when running the makefile, and
I don't see anything about it in the documentation for the merge
element.

I'm using Wix 2.0 and what I have in the code is elements such as:

Merge Id=ConfigFilesMSM Language=0
src=I:\Install\Files\Shared\ConfigFiles.Msm DiskId=1
FileCompression=yes /

In the ModuleInstallExecuteSequence table of the msm files we have rows such as:

Action: RemoveOldDriver.B391C18A_6953_11D4_82CB_00D0B72E1DB9
Sequence:
BaseAction: CostInitialize
After: 0
Condition: INSTALLCONDITION=1

I was a bit suspicious of the GUID being tacked on there, but doing it
with and without the GUID doesn't seem to make any difference. I was
also unsure about leaving the Sequence column blank, but adding a
specific sequence number didn't seem to help either.

Since I haven't been able to find any threads from other people
encountering the issue it seems like it has to be something really
simple that I'm missing.

Thanks for any help!

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Accessing directories above SourceDir

2008-03-11 Thread Geoff Finger
We have two Projects, A and B. There is a file in ProjectB that needs
to be run by ProjectA. Originally thinking that ProjectB was a child
of ProjectA I wrote some code that included the lines:

CustomAction Id=ResetProjectBDir Property=PROJECTBDIR
Value=[SourceDir]\PROJECTBDIR /
CustomAction Id=RunBFile Directory=PROJECTBDIR
ExeCommand='[PROJECTBDIR]file.exe ' Return=asyncNoWait /

That worked fine, and to show a random example from the install log
right after CostFinalize, resulted in:

PROPERTY CHANGE: Modifying PROJECTBDIR property. Its current value is
'C:\Documents and Settings\gfinger\Desktop\Install\\PROJECTBDIR'. Its
new value: 'C:\Documents and
Settings\gfinger\Desktop\Install\PROJECTBDIR\'.

However then I was informed that ProjectB was actually a sibling of
ProjectA, and their install folders would be at the same level, along
with some other sibling projects that would also need to access
ProjectB in the same manner.

So I changed the above to:
CustomAction Id=ResetProjectBDir Property=PROJECTBDIR
Value=[SourceDir]..\PROJECTBDIR /

However now when I try to run it I get:

Product: Project A -- Error 1324. The folder path '..' contains an
invalid character.

Is there some way to fix the Custom Action so it will work properly?
Or some other way to access a folder that's above SourceDir in the
folder hierarchy?

Thanks!

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Adding an ok/cancel popup dialog?

2008-03-05 Thread Geoff Finger
Okay, thanks. I added an extra page after the Welcome dialog with the
confirm/cancel message. Just one more page for the users to click
through I guess :)

On Sat, Mar 1, 2008 at 2:47 PM, Bob Arnson [EMAIL PROTECTED] wrote:
 Geoff Finger wrote:
   I hooked up the dialog to the Next button for the welcome dialog and
   everything seem to work fine, except that if you hit OK it goes back
   to the welcome dialog and doesn't go on to the next section of the
   installer until you hit Next again. Is there any way to make the
   Welcome page wait on the results of the spawned dialog before
   evaluating the next Publish action in the list? Or do I just need to
   give up and make the warning a standalone dialog page rather than a
   popup?
  

  When a spawned dialog is running, so is the dialog that spawns it. MSI
  doesn't have a way to close both dialogs from the spawned one. That's
  why we handled something similar before the welcome dialog, in
  src\Setup\VStudio.wxs.

  --
  sig://boB
  http://joyofsetup.com/




-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Adding an ok/cancel popup dialog?

2008-02-26 Thread Geoff Finger
We just recently added the Upgrade Id value to the installer and the
testers have complained that it deletes the old version of the program
without asking first, so I'm trying to add an ok/cancel popup dialog
at the first step of the installer if a previous version is detected
to warn them about that.

I hooked up the dialog to the Next button for the welcome dialog and
everything seem to work fine, except that if you hit OK it goes back
to the welcome dialog and doesn't go on to the next section of the
installer until you hit Next again. Is there any way to make the
Welcome page wait on the results of the spawned dialog before
evaluating the next Publish action in the list? Or do I just need to
give up and make the warning a standalone dialog page rather than a
popup?

What I've got currently is:

Control Id=Next Type=PushButton X=230 Y=230 Width=56
Height=17 Default=yes Text=[ButtonText_Next]
Publish Event=SpawnDialog
Value=OldVerDetected![CDATA[OLDVERPRESENT AND OVERWRITEOKAY =
0]]/Publish
Publish Event=NewDialog Value=FindLicenseDlg![CDATA[NOT
OLDVERPRESENT OR OVERWRITEOKAY  0]]/Publish
/Control

Dialog Id=OldVerDetected Width=270 Height=95
Title=[ProductName] [Setup] NoMinimize=yes
...
Control Id=OK Type=PushButton X=100 Y=60 Width=60
Height=17 Default=yes Cancel=yes Text=[ButtonText_OK]
Publish Property=OVERWRITEOKAY Value=11/Publish
Publish Event=EndDialog Value=Return1/Publish
/Control
Control Id=Cancel Type=PushButton X=200 Y=60 Width=60
Height=17 Default=yes Cancel=yes Text=[ButtonText_Cancel]
Publish Event=EndDialog Value=Return1/Publish
/Control
/Dialog

Thanks!

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Failing gracefully from ServiceControl?

2008-02-25 Thread Geoff Finger
Well it took me about six hours of websearching and following false
leads to get the pretty easy custom action working, so just to try
and save anyone else the effort in the future...

I figured out almost immediately that you _can_ perform the action
fairly simply using the following:

Property Id=NETEXEnet.exe/Property
CustomAction Id=StartMyService Property=NETEXE ExeCommand=start
lfs Return=ignore /

InstallExecuteSequence
Custom Action=StartMyService
After=InstallFinalize![CDATA[(MyServiceFeature = 3)]]/Custom
/InstallExecuteSequence


However that way you get a command line window popping up in the
background as net.exe tries to start the service. I tried fiddling
around with a lot of the properties but couldn't get it to run
quietly. I finally found there's a specific function in wixca.dll to
run command line function quietly.

First you've got to find wixca.dll so you can either reference the
location or copy it into your project. In my case it was in C:\Program
Files (x86)\Windows Installer XML\bin. You then need something similar
to the following:

Binary Id=wixca src=wixca.dll/
CustomAction Id=StartMyService BinaryKey=wixca
DllEntry=CAQuietExec Execute=immediate Return=ignore /
CustomAction Id=StartMyService.SetProperty Property=QtExecCmdLine
Value='net start MyService' /

(Note that it's required to have the extra set of quotes around net!)

InstallExecuteSequence
Custom Action=StartMyService.SetProperty
After=InstallFinalize![CDATA[(MyServiceFeature = 3)]]/Custom
Custom Action=StartMyService
After=StartMyService.SetProperty![CDATA[(MyServiceFeature =
3)]]/Custom
/InstallExecuteSequence


Thanks to everyone who offered suggestions on how to get this worked out!

On Fri, Feb 22, 2008 at 4:03 PM, Alexander Shevchuk
[EMAIL PROTECTED] wrote:
 It should be pretty easy to accomplish with custom action type 34 scheduled 
 after InstallFinalize and with ExeCommand set to:
  net start servicename


  Alex





  -Original Message-
  From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Geoff Finger
  Sent: Friday, February 22, 2008 3:42 PM
  To: wix-users@lists.sourceforge.net
  Subject: Re: [WiX-users] Failing gracefully from ServiceControl?

  That worked! When the service install fails the error box now has an
  Ignore option. When I saw that option in the docs it never occurred
  to me that it might also control the criticality of the item, I
  figured turning it off would just make the installation continue on a
  little further before it died. Thanks!

  So does anyone know of a way to make it always choose Ignore without
  popping up the window first?

  And KStuart, when I first started looking into this problem I found a
  couple posts from last year saying things like:

  The assemblies are not committed until successful execution of the
  InstallFinalize Action. This means that if you author a custom action
  or resource that relies on the assembly, it must be sequenced after
  the InstallFinalize Action. For example, if you need to start a
  service that depends on an assembly in the Global Assembly Cache
  (GAC), you must schedule the starting of that service after the
  InstallFinalize Action. This means you cannot use the ServiceControl
  Table to start the service, instead you must use a custom action that
  is sequenced after InstallFinalize.

  That certainly seems to indicate that if I want the services to start
  on a system where the assemblies haven't already been installed I'd
  have to make a custom action to do it, and we probably don't have time
  to deal with that before the release, which is why we're trying to get
  the fire and forget method working.

  On Fri, Feb 22, 2008 at 2:26 PM, Wilson, Phil
  [EMAIL PROTECTED] wrote:
   It's possible that setting the ServiceControl Wait value to 0 might make a 
 difference. Generally speaking, this is the way you say you don't care if the 
 service starts properly or not.  However the documentation says that the SCM 
 needs to get the service into pending state, and I don't know off the top of 
 my head if this means the process has to at least start (and missing 
 dependencies could mean it doesn't).
  
Phil Wilson
  
  
  
  
-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of KStuart
Sent: Thursday, February 21, 2008 6:18 PM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Failing gracefully from ServiceControl?
  
  
I haven't been using windows installer/wix very long so am a little 
 confused,
from what I can see the default behaviour of the install sequence is to
process all files before attempting to start any services, therefore if 
 your
product includes dependent assemblies they will already have processed
before the StartServices action, in fact starting services is close to the
last action in the install sequence, of course you can always move it
further back.
  
If you're installing several

Re: [WiX-users] Failing gracefully from ServiceControl?

2008-02-22 Thread Geoff Finger
That worked! When the service install fails the error box now has an
Ignore option. When I saw that option in the docs it never occurred
to me that it might also control the criticality of the item, I
figured turning it off would just make the installation continue on a
little further before it died. Thanks!

So does anyone know of a way to make it always choose Ignore without
popping up the window first?

And KStuart, when I first started looking into this problem I found a
couple posts from last year saying things like:

The assemblies are not committed until successful execution of the
InstallFinalize Action. This means that if you author a custom action
or resource that relies on the assembly, it must be sequenced after
the InstallFinalize Action. For example, if you need to start a
service that depends on an assembly in the Global Assembly Cache
(GAC), you must schedule the starting of that service after the
InstallFinalize Action. This means you cannot use the ServiceControl
Table to start the service, instead you must use a custom action that
is sequenced after InstallFinalize.

That certainly seems to indicate that if I want the services to start
on a system where the assemblies haven't already been installed I'd
have to make a custom action to do it, and we probably don't have time
to deal with that before the release, which is why we're trying to get
the fire and forget method working.

On Fri, Feb 22, 2008 at 2:26 PM, Wilson, Phil
[EMAIL PROTECTED] wrote:
 It's possible that setting the ServiceControl Wait value to 0 might make a 
 difference. Generally speaking, this is the way you say you don't care if the 
 service starts properly or not.  However the documentation says that the SCM 
 needs to get the service into pending state, and I don't know off the top of 
 my head if this means the process has to at least start (and missing 
 dependencies could mean it doesn't).

  Phil Wilson




  -Original Message-
  From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of KStuart
  Sent: Thursday, February 21, 2008 6:18 PM
  To: wix-users@lists.sourceforge.net
  Subject: Re: [WiX-users] Failing gracefully from ServiceControl?


  I haven't been using windows installer/wix very long so am a little confused,
  from what I can see the default behaviour of the install sequence is to
  process all files before attempting to start any services, therefore if your
  product includes dependent assemblies they will already have processed
  before the StartServices action, in fact starting services is close to the
  last action in the install sequence, of course you can always move it
  further back.

  If you're installing several services are you sure you don't have any
  inter-service dependencies you're not taking care of?

  You can always check if the dependencies are already installed and skip
  trying to start the service if they are not, but like I said, if your
  product is installing those assemblies anyhow it shouldn't be an issue.


  Geoff Finger-2 wrote:
  
   I've got several services I'm trying to install. If I add
   Start='install' to the ServiceControl element then it will try to
   start them, but it will almost always fail with a 1920 error. I'm
   pretty sure this is because some of the services are dependent on
   side-by-side assemblies that are being installed at the same time and
   so won't be available until the install actually finishes.
  
   However is there a way to make it so that it will attempt to start the
   services but _not_ force a rollback if it fails? There are at least
   some circumstances where the assemblies might already have been
   installed by another package and it would be nice to at least make the
   attempt. There doesn't seem to be any Vital attribute for the
   ServiceControl element that I can set to no. There is a Vital for
   ServiceInstall, but I can't set that to no even if it would fix the
   above problem, because it _is_ vital that they at least install
   properly, even if they don't start right away, and the same goes for
   ErrorControl in the ServiceInstall element as well I think.
  
   As an added bonus, if the above can be done is there also a way to do
   the service start step silently? We're expecting it to fail most of
   the time so there's no need to pop up an error message about it if it
   does.
  
   Thanks!
  
   And here's the code I've got in case it matters:
  
   ServiceInstall Id=SystemServiceInstall
   DisplayName=$(loc.IDS_SERVER) $(var.MAJORVER).$(var.MINORVER)
   Description=$(loc.IDS_SERVER_SERVICE)
   $(var.MAJORVER).$(var.MINORVER) Name=ServerService
   ErrorControl=normal Start=auto Type=ownProcess Vital=yes
 ServiceDependency Id =HTTP /
   /ServiceInstall
  
   ServiceControl Id=SystemServiceControl Name=ServerService
   Start=install Stop=uninstall Remove=uninstall /
  
   -
   This SF.net email is sponsored by: Microsoft

[WiX-users] Failing gracefully from ServiceControl?

2008-02-21 Thread Geoff Finger
I've got several services I'm trying to install. If I add
Start='install' to the ServiceControl element then it will try to
start them, but it will almost always fail with a 1920 error. I'm
pretty sure this is because some of the services are dependent on
side-by-side assemblies that are being installed at the same time and
so won't be available until the install actually finishes.

However is there a way to make it so that it will attempt to start the
services but _not_ force a rollback if it fails? There are at least
some circumstances where the assemblies might already have been
installed by another package and it would be nice to at least make the
attempt. There doesn't seem to be any Vital attribute for the
ServiceControl element that I can set to no. There is a Vital for
ServiceInstall, but I can't set that to no even if it would fix the
above problem, because it _is_ vital that they at least install
properly, even if they don't start right away, and the same goes for
ErrorControl in the ServiceInstall element as well I think.

As an added bonus, if the above can be done is there also a way to do
the service start step silently? We're expecting it to fail most of
the time so there's no need to pop up an error message about it if it
does.

Thanks!

And here's the code I've got in case it matters:

ServiceInstall Id=SystemServiceInstall
DisplayName=$(loc.IDS_SERVER) $(var.MAJORVER).$(var.MINORVER)
Description=$(loc.IDS_SERVER_SERVICE)
$(var.MAJORVER).$(var.MINORVER) Name=ServerService
ErrorControl=normal Start=auto Type=ownProcess Vital=yes
ServiceDependency Id =HTTP /
/ServiceInstall

ServiceControl Id=SystemServiceControl Name=ServerService
Start=install Stop=uninstall Remove=uninstall /

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Checking for .NET version/existance

2008-02-18 Thread Geoff Finger
The program I'm installing has an Interop we'd like to install on
systems using .NET, but we still want to be able to install the
program with reduced functionality on systems without .NET. However
when we tried installing it on such a system we got an error because
it tried to add the interop to a nonexistant Windows\assembly
directory. So I added a condition to check the version of .NET
installed and make sure it was greater than or equal to .NET 1.0, as
follows:

Component Id=InteropSOLibToGAC Guid=MyGuidHere
File Id=InteropSOLibFile Name=IpSO.dll
LongName=Interop.SOLib.dll  KeyPath=yes
src=..\..\Source\Build\Win32\Release\Interop.SOLib.dll
Assembly=.net /
Condition![CDATA[MsiNetAssemblySupport = 1.0.3705]]/Condition
/Component

I figured if .NET wasn't installed that should return false and kill
component. So to test it I grabbed a test machine and uninstalled all
the .NET components, but when I ran the installation it tried to
install the interop anyways. When I checked the log file I found the
following:

MSI (c) (C4:C8) [17:11:22:825]: Note: 1: 1935 2: {MyGuidHere} 3:
0x80004005 4:  5: CreateAssemblyCache 6:
Interop.SOLib,version=7.0.0.0,processorArchitecture=MSIL,publicKeyToken=507ED33EA22D1100,culture=neutral
MSI (c) (C4:C8) [17:11:22:825]: ignoring fusion interface error,
assuming we are bootstrapping (MsiNetAssemblySupport is unset)

followed a little later by:

MSI (s) (D8:7C) [17:12:00:949]: Assembly Error:Function not defined in
specified DLL.
MSI (s) (D8:7C) [17:12:00:949]: Note: 1: 1935 2: {MyGuidHere} 3:
0x8002802F 4:  5: CreateAssemblyNameObject 6:
Interop.SOLib,version=7.0.0.0,processorArchitecture=MSIL,publicKeyToken=507ED33EA22D1100,culture=neutral
Error 1935. An error occured during the installation of assembly
component {MyGuidHere}}. HRESULT: 0x8002802F. assembly interface: ,
function: CreateAssemblyNameObject, assembly name:
Interop.SOLib,version=7.0.0.0,processorArchitecture=MSIL,publicKeyToken=507ED33EA22D1100,culture=neutral
MSI (s) (D8:7C) [17:13:03:975]: Product: Server 7.0 -- Error 1935. An
error occured during the installation of assembly component
{MyGuidHere}. HRESULT: 0x8002802F. assembly interface: , function:
CreateAssemblyNameObject, assembly name:
Interop.SOLib,version=7.0.0.0,processorArchitecture=MSIL,publicKeyToken=507ED33EA22D1100,culture=neutral


If it failed to be able to access the fusion interface then why did
the condition pass? Is this some kind of weirdness because .NET was
installed on the system once and then uninstalled, or will the same
thing happen on a completely clean machine? And is there any way to
force it to fail in that circumstance using the MsiNetAssemblySupport
call or something similar?

If not I think my alternatives are either to check for the existence
of the windows\assembly directory directly or check the registry to
see if the .NET keys are there, but neither of those solutions seems
ideal.

Thanks!

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Checking for .NET version/existance

2008-02-18 Thread Geoff Finger
Whoops, it turns out that it was actually being installed twice in
different spots, once I updated _both_ spots to use the check
everything was fine. That's what i get for trying to debug stuff at
6pm without making sure i've checked all 5000 or so lines of code =P
(And perhaps I ought to pull those two references out into yet another
fragment or merge module)

Sorry bout that!

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Multi-file assembly problem

2007-12-06 Thread Geoff Finger
Short version:
Is there any way to override what seems to be the default behavior and
force Wix/msi to install additional file elements in an assembly
Component into the WinSxS folder even though they aren't included in
the main file's manifest? Or alternately are there any kind and
generous souls out there who know how to correctly combine several
dlls into one multifile assembly using mt.exe , makecat and signtool?

Long version:
I've got a couple legacy dlls that I'm trying to include as
Side-by-side assemblies. I've gone through this process with other
files just fine before. The problem in this case is that one of the
dlls tries to load the others directly via LoadLibrary, and after
digging through the code a little it seems that changing that behavior
would cascade into rewriting the whole library. Making them into a
multifile assembly seems like it would work, but all the instructions
for making those are for C# code compiled with .NET, no explanation
about how to handle legacy code.

This would seem like an occasion to just give up on the whole assembly
idea, but I happened to discover while testing an installation that if
i just copy DLLs 2 and 3 to the Side-by-side folder for DLL 1 then the
whole thing works. So if I can just get Wix to put the files there
everything will be great.

However I've run into issues trying to get the files to install in
that manner. If i add the files to the dll 1 Component then the log
file says things like:

MSI (s) (5C:A8) [13:44:49:394]: Executing op:
AssemblyCopy(SourceName=DLL2.dll|DLL2I.dll,SourceCabKey=DLL2FileLocal.D0119AF2____,DestName=DLL2.dll,Attributes=16384,FileSize=57344,PerTick=32768,,VerifyMedia=1,ComponentId={7049DC30-651B-427D-A90B-3FAF27B23C27}AssemblyMode=0,)
MSI (s) (5C:A8) [13:44:49:394]: Source for file
'DLL2FileLocal.D0119AF2____' is compressed
InstallFiles: File: DLL2.dll, Directory: , Size: 57344

However nothing actually gets copied the DLL1 side-by-side folder
except for DLL1 itself.

I then tried changing the DLL1 manifest to include DLLs 2 and 3. That
either causes an installation error:
Error 1935. An error occured during the installation of assembly
component {7049DC30----}. HRESULT: 0x800736CC.
assembly interface: IAssemblyCacheItem, function: Commit, assembly
name: 
DLL1,version=1.0.0.0,type=win32,processorArchitecture=X86,publicKeyToken=0301

Or it _does_ cause them to get copied over to the DLL1 side-by-side
folder, but then my program can't find DLL1 anymore for reasons I
can't figure out. (Depends says the Side-by-Side configuration has an
error, but when I right click on DLL1.dll in the depends file window
and select Properties it can find the file in WinSxS just fine.)
(The difference between the two problems is at what point I embed the
modified manifest file into the original DLL1 file using mt.exe)

I will be much obliged to anyone who can clear any of this mess up.

-
SF.Net email is sponsored by: 
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Multi-file assembly problem

2007-12-06 Thread Geoff Finger
The problem is that if I installed everything via the old method (each
of the three files set up as its own assembly with its own WinSxS
folder) and then copied the DLL2 and DLL3 files from their WinSxS
folders into the WinSxS folder for DLL1 then everything ran correctly.

If i can just recreate that situation with the installer then
everything would be fine, but Wix/Msi seems to refuse to copy
additional files into DLL1's WinSxS folder unless they're included in
the assembly manifest. Despite the fact they're part of DLL1's
Component block in Wix.

On Dec 6, 2007 4:10 PM, Kelly Leahy [EMAIL PROTECTED] wrote:

  Or it _does_ cause them to get copied over to the DLL1 side-by-side
   folder, but then my program can't find DLL1 anymore for reasons I
   can't figure out.

 Uhh...  I think I can explain this one.  Consider the following case:

 DLL1 in folder not in path
 DLL2 in folder not in path

 DLL1 loads DLL2 using LoadLibrary (and relative path).

 Application loads DLL1 by absolute path (like the way SxS works).

 DLL1 won't successfully load DLL2.  Also, if DLL1 'statically' binds to
 DLL2, it will fail to load DLL1 altogether, since DLL2 isn't on the path.

 The key thing here is that the only 'application folder' that is used to
 resolve DLL dependencies is the EXE path, not the DLL path.

 http://msdn2.microsoft.com/en-us/library/ms682586.aspx

 Under no circumstances is the location of the DLL that is loading the other
 DLL used in determining the DLL search path.  This is why people have so
 many problems with COM in-process servers that try to load DLL dependencies
 from their application directory.




  Geoff Finger [EMAIL PROTECTED]

 Sent by: [EMAIL PROTECTED]

 12/06/2007 03:38 PM

 To wix-users@lists.sourceforge.net

 cc

 Subject [WiX-users] Multi-file assembly problem






 Short version:
  Is there any way to override what seems to be the default behavior and
  force Wix/msi to install additional file elements in an assembly
  Component into the WinSxS folder even though they aren't included in
  the main file's manifest? Or alternately are there any kind and
  generous souls out there who know how to correctly combine several
  dlls into one multifile assembly using mt.exe , makecat and signtool?

  Long version:
  I've got a couple legacy dlls that I'm trying to include as
  Side-by-side assemblies. I've gone through this process with other
  files just fine before. The problem in this case is that one of the
  dlls tries to load the others directly via LoadLibrary, and after
  digging through the code a little it seems that changing that behavior
  would cascade into rewriting the whole library. Making them into a
  multifile assembly seems like it would work, but all the instructions
  for making those are for C# code compiled with .NET, no explanation
  about how to handle legacy code.

  This would seem like an occasion to just give up on the whole assembly
  idea, but I happened to discover while testing an installation that if
  i just copy DLLs 2 and 3 to the Side-by-side folder for DLL 1 then the
  whole thing works. So if I can just get Wix to put the files there
  everything will be great.

  However I've run into issues trying to get the files to install in
  that manner. If i add the files to the dll 1 Component then the log
  file says things like:

  MSI (s) (5C:A8) [13:44:49:394]: Executing op:

 AssemblyCopy(SourceName=DLL2.dll|DLL2I.dll,SourceCabKey=DLL2FileLocal.D0119AF2____,DestName=DLL2.dll,Attributes=16384,FileSize=57344,PerTick=32768,,VerifyMedia=1,ComponentId={7049DC30-651B-427D-A90B-3FAF27B23C27}AssemblyMode=0,)
  MSI (s) (5C:A8) [13:44:49:394]: Source for file
  'DLL2FileLocal.D0119AF2____' is compressed
  InstallFiles: File: DLL2.dll, Directory: , Size: 57344

  However nothing actually gets copied the DLL1 side-by-side folder
  except for DLL1 itself.

  I then tried changing the DLL1 manifest to include DLLs 2 and 3. That
  either causes an installation error:
  Error 1935. An error occured during the installation of assembly
  component {7049DC30----}. HRESULT: 0x800736CC.
  assembly interface: IAssemblyCacheItem, function: Commit, assembly
  name:
 DLL1,version=1.0.0.0,type=win32,processorArchitecture=X86,publicKeyToken=0301

  Or it _does_ cause them to get copied over to the DLL1 side-by-side
  folder, but then my program can't find DLL1 anymore for reasons I
  can't figure out. (Depends says the Side-by-Side configuration has an
  error, but when I right click on DLL1.dll in the depends file window
  and select Properties it can find the file in WinSxS just fine.)
  (The difference between the two problems is at what point I embed the
  modified manifest file into the original DLL1 file using mt.exe)

  I will be much obliged to anyone who can clear any of this mess up.

  -
  SF.Net

Re: [WiX-users] Multi-file assembly problem

2007-12-06 Thread Geoff Finger
Yes, I'm creating the manifests myself. Or rather I'm taking the
automatically generated manifests, modifying them if necessary, and
signing them by hand using mt.exe, makecat and signtool.

I started out with manifest dependencies in DLL1 for DLL2 and DLL3,
but that doesn't help with a LoadLibrary call, which expects to load
the files directly. (I could remove the LoadLibrary call, but the
results of that are passed on to a couple different functions, which
pass results on to a couple different functions, and in the end
ripping it out would directly or indirectly effect a lot of the code.)

Putting the multiple file references into a single manifest file was
what I was trying at the end of the original email. If I embedded the
manifest back into the DLL1 file then Wix threw an error on
installation. If I just left the original unmodified manifest in the
DLL1 file then all the files get installed to the correct place, but
then the program can't locate DLL1 anymore. It seems like I may need
to do something differently with the manifest embedding for multifile
assemblies, but I'm not sure what.

The _simple_ solution would be finding a way to just force Wix to copy
the files over without futzing about with the manifests any more than
I already have.

On Dec 6, 2007 4:58 PM, Kelly Leahy [EMAIL PROTECTED] wrote:

 Are you creating the manifest yourself?

 You should be able to create a manifest that has dependency references in it
 for DLL2 and DLL3...

 See the dependency and dependentAssembly tags in Manifest reference:
 http://msdn2.microsoft.com/en-us/library/aa374219.aspx

 It also looks like you can put multiple files in a single 'assembly
 manifest', but I don't know how to get WiX to install them.

 I still don't understand why your LoadLibrary works when you have the files
 in the same folder though - I'd be curious to see what GetModuleFileName
 returns on those modules.

 Kelly





 Geoff Finger [EMAIL PROTECTED]

 Sent by: [EMAIL PROTECTED]

 12/06/2007 04:29 PM

 To wix-users@lists.sourceforge.net, [EMAIL PROTECTED]

 cc

 Subject Re: [WiX-users] Multi-file assembly problem






 The problem is that if I installed everything via the old method (each
  of the three files set up as its own assembly with its own WinSxS
  folder) and then copied the DLL2 and DLL3 files from their WinSxS
  folders into the WinSxS folder for DLL1 then everything ran correctly.

  If i can just recreate that situation with the installer then
  everything would be fine, but Wix/Msi seems to refuse to copy
  additional files into DLL1's WinSxS folder unless they're included in
  the assembly manifest. Despite the fact they're part of DLL1's
  Component block in Wix.

  On Dec 6, 2007 4:10 PM, Kelly Leahy [EMAIL PROTECTED] wrote:
  
Or it _does_ cause them to get copied over to the DLL1 side-by-side
 folder, but then my program can't find DLL1 anymore for reasons I
 can't figure out.
  
   Uhh...  I think I can explain this one.  Consider the following case:
  
   DLL1 in folder not in path
   DLL2 in folder not in path
  
   DLL1 loads DLL2 using LoadLibrary (and relative path).
  
   Application loads DLL1 by absolute path (like the way SxS works).
  
   DLL1 won't successfully load DLL2.  Also, if DLL1 'statically' binds to
   DLL2, it will fail to load DLL1 altogether, since DLL2 isn't on the path.
  
   The key thing here is that the only 'application folder' that is used to
   resolve DLL dependencies is the EXE path, not the DLL path.
  
   http://msdn2.microsoft.com/en-us/library/ms682586.aspx
  
   Under no circumstances is the location of the DLL that is loading the
 other
   DLL used in determining the DLL search path.  This is why people have so
   many problems with COM in-process servers that try to load DLL
 dependencies
   from their application directory.
  
  
  
  
Geoff Finger [EMAIL PROTECTED]
  
   Sent by: [EMAIL PROTECTED]
  
   12/06/2007 03:38 PM
  
   To wix-users@lists.sourceforge.net
  
   cc
  
   Subject [WiX-users] Multi-file assembly problem
  
  
  
  
  
  
   Short version:
Is there any way to override what seems to be the default behavior and
force Wix/msi to install additional file elements in an assembly
Component into the WinSxS folder even though they aren't included in
the main file's manifest? Or alternately are there any kind and
generous souls out there who know how to correctly combine several
dlls into one multifile assembly using mt.exe , makecat and signtool?
  
Long version:
I've got a couple legacy dlls that I'm trying to include as
Side-by-side assemblies. I've gone through this process with other
files just fine before. The problem in this case is that one of the
dlls tries to load the others directly via LoadLibrary, and after
digging through the code a little it seems that changing that behavior
would cascade into rewriting the whole library. Making them into a
multifile assembly seems like

Re: [WiX-users] Uninstalling WinSxS in Vista

2007-11-06 Thread Geoff Finger
On Nov 5, 2007 9:33 PM, Bob Arnson [EMAIL PROTECTED] wrote:
 Geoff Finger wrote:
  I've run into an issue with Vista where the side by side assemblies
  installed to WinSxS do not get removed when the uninstaller is run.
 

 Known issue and I'm not aware of a workaround. And yes it sucks.

Well good to know that it's still a current issue and not something
wrong on my end. Thanks!

-
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now  http://get.splunk.com/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Uninstalling WinSxS in Vista

2007-11-05 Thread Geoff Finger
I've run into an issue with Vista where the side by side assemblies
installed to WinSxS do not get removed when the uninstaller is run.

I found the a 
href=https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=260142;Microsoft
Connect Issue 260142/a which seems to indicate that it is normal
behavior for the WinSxS files in Vista to stick around and be deleted
at some later unspecified time.

I think the uninstaller is working properly because AssemblyUnpublish
is being called, but I have no way to be sure since the files never
seem to be removed. The computer i'm testing it on now had the
uninstaller run four or five days ago and has been rebooted several
times since then and the files are still there.

Has anyone else run into this issue and if so have you figured out any
way how to deal with it? Is there somewhere that can be checked that
will indicate that the files are indeed marked for deletion and
possible when that deletion is scheduled for? Or a way to force the
cleanup to happen? (Either as part of the uninstall process or at some
later date.)

Thanks for the help!

-
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now  http://get.splunk.com/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] x64 and ProgramFilesFolder vs. ProgramFiles64Folder

2007-11-02 Thread Geoff Finger
On Oct 24, 2007 7:59 AM, Bob Arnson [EMAIL PROTECTED] wrote:
 Geoff Finger wrote:
  Instead what I found was a post claiming I don't think you want to
  reference ProgramFiles64Folder either. Use ProgramFilesFolder and
  Windows Installer will put things in the correct directory based upon
  the Component's Win64 setting.
 

 That's not how it works. A 64-bit package can write to both folders (as
 appropriate given the bitness of its components) but it's not automatic
 so you need both directory hierarchies.

How do you avoid getting the error LGHT0109 : Duplicate symbol
'Directory:INSTALLDIR' found. errors in that case? I can change
INSTALLDIR to INSTALLDIR2 or something similar, but then the file
structure in Program Files (x86) won't match that in Program Files if
the user changes the install directory, right? Do I need to make some
kind of custom action to copy the value of INSTALLDIR to INSTALLDIR2
after the directory selection page?

Thanks! (And sorry about the slow response, I got sidetracked onto
another project for awhile.)

-
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now  http://get.splunk.com/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] x64 and ProgramFilesFolder vs. ProgramFiles64Folder

2007-10-23 Thread Geoff Finger
I have two installers for our project, one for 32 bit and one for 64
bit and I'm running into some problems with the x64 version.

My first question, is there a tutorial for how to build x64 installers
with wix 2.0 somewhere? I could have sworn I saw a link to one at some
point, but I can't find any such links in the Documentation sections
on wix.sourceforge, and I don't see anything on the subject in the
tutorial on Tramontana.

The specific problem in this case is the x64 installer was working
just fine but someone pointed out that one of the files was 32 bit and
thus should be installed to Program Files (x86) instead of the
normal Program Files folder.

The component already had Win64=no set, so I figured I needed to
add a ProgramFilesFolder Directory as well as the ProgramFiles64Folder
directory, but that caused errors such as Duplicate symbol
'Directory:INSTALLDIR' found. So I started looking around for how to
have the hierarchies beneath both ProgramFilesFolder and
ProgramFiles64Folder mirror each other.

Instead what I found was a post claiming I don't think you want to
reference ProgramFiles64Folder either. Use ProgramFilesFolder and
Windows Installer will put things in the correct directory based upon
the Component's Win64 setting.

I tried that out, and instead _everything_ got installed to Program
Files (x86), regardless of what its Win64 tag was set to.

I have  InstallerVersion=200 Compressed=yes Platforms=x64 in
the Package element, and Win64=yes for all the components (except
the one that's _supposed_ to end up in the x86 folder of course.)

So was that post wrong and I need to find a different method, and if
so what? Or was that post right and I'm trying to implement it
incorrectly?

Thanks for the help!

-
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now  http://get.splunk.com/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] x64 and ProgramFilesFolder vs. ProgramFiles64Folder

2007-10-23 Thread Geoff Finger
After poking around a little more I've found something in the logs
that might be related. There are a lot of messages about:
WIN64DUALFOLDERS: Substitution in 'C:\Program Files
(x86)\InstallDir\File.exe' folder had been blocked by the 1 mask
argument (the folder pair's iSwapAttrib member = 0).

Some google searches have indicated that some other people have
complained in the past about it changing their install location
between Program Files (x86) and Program Files, which is exactly
what I want it to be doing in my case, but in all those examples
iSwapAttrib was set to 1. And aside from those occasional complaints
I've so far found nothing at all about what WIN64DUALFOLDERS and
iSwapAttrib are or how to set the value of the later. Anyone have any
clues of what I'm doing wrong in Wix to get that value screwed up?

Thanks again!

-
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now  http://get.splunk.com/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Allowing sources from either x64 or x86

2007-05-22 Thread Geoff Finger
I've got a rather simple question that is probably due to some obvious
in hindsight error, but I'm totally stymied by it and haven't had any
luck searching for a solution.

I just recently switched from an x86 machine to an x64 machine running
XP x64. I suddenly find that some of the installers I've written don't
compile because they're looking for files in Program Files rather
than Program Files (x86). In particular the Microsoft VC80 CRT and
MFC merge modules in Program Files (x86)\Common Files\Merge Modules
are being problematic.

I thought for starters I could try using ProgramFilesFolder to see if
that would resolve properly, but I can't get it to work correctly.

I've got the following setup in the relevant wxs file:

?if ($(var.PLATFORM) = Win32)?
  ?define PROGRAMFILESFOLDER = ProgramFilesFolder?

Directory Id=$(var.PROGRAMFILESFOLDER) Name=PFiles


So at first I thought it'd try

Merge Id=CRT Language=0 src=$(var.PROGRAMFILESFOLDER)\Common
Files\Merge Modules\Microsoft_VC80_CRT_x86.msm
 DiskId=1 FileCompression=yes /

However that results in the error:

Error   25  error LGHT0100 : File of type 'Module' with name
'ProgramFilesFolder\Common Files\Merge
Modules\Microsoft_VC80_CRT_x86.msm' could not be found. light.exe

So it's getting resolved to ProgramFilesFolder but not getting any
further. I tried [ProgramFilesFolder] instead, but that didn't work
either. Is there some other variable I should be using or am I going
about this in entirely the wrong way?

Thanks!

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Allowing sources from either x64 or x86

2007-05-22 Thread Geoff Finger
That worked, thank you! And of _course_ var.PROGRAMFILESFOLDER is
going to have issues at build time, what was I thinking? *sigh*

On 5/22/07, Mike Dimmick [EMAIL PROTECTED] wrote:
 You're looking for something defined at build time. Try $(env.ProgramFiles).

 Windows defines the ProgramFiles environment variable to the location of the
 Program Files folder.

 I'm not guaranteeing this will work as I don't have an x64 system and don't
 know whether ProgramFiles is defined differently for a 64-bit versus 32-bit
 process. I _think_ that since the WiX toolset is compiled with .NET 1.1, all
 the programs will run in 32-bit processes.

 Personally I prefer to put all my dependencies under my source tree and
 check them into source control so I can be certain that all builds are fully
 reproducible.

 --
 Mike Dimmick

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of Geoff Finger
 Sent: 22 May 2007 23:23
 To: wix-users@lists.sourceforge.net
 Subject: [WiX-users] Allowing sources from either x64 or x86

 I've got a rather simple question that is probably due to some obvious
 in hindsight error, but I'm totally stymied by it and haven't had any
 luck searching for a solution.

 I just recently switched from an x86 machine to an x64 machine running
 XP x64. I suddenly find that some of the installers I've written don't
 compile because they're looking for files in Program Files rather
 than Program Files (x86). In particular the Microsoft VC80 CRT and
 MFC merge modules in Program Files (x86)\Common Files\Merge Modules
 are being problematic.

 I thought for starters I could try using ProgramFilesFolder to see if
 that would resolve properly, but I can't get it to work correctly.

 I've got the following setup in the relevant wxs file:

 ?if ($(var.PLATFORM) = Win32)?
   ?define PROGRAMFILESFOLDER = ProgramFilesFolder?

 Directory Id=$(var.PROGRAMFILESFOLDER)
 Name=PFiles


 So at first I thought it'd try

 Merge Id=CRT Language=0 src=$(var.PROGRAMFILESFOLDER)\Common
 Files\Merge Modules\Microsoft_VC80_CRT_x86.msm
  DiskId=1 FileCompression=yes /

 However that results in the error:

 Error   25  error LGHT0100 : File of type 'Module' with name
 'ProgramFilesFolder\Common Files\Merge
 Modules\Microsoft_VC80_CRT_x86.msm' could not be found. light.exe

 So it's getting resolved to ProgramFilesFolder but not getting any
 further. I tried [ProgramFilesFolder] instead, but that didn't work
 either. Is there some other variable I should be using or am I going
 about this in entirely the wrong way?

 Thanks!

 -
 This SF.net email is sponsored by DB2 Express
 Download DB2 Express C - the FREE version of DB2 express and take
 control of your XML. No limits. Just data. Click to get it now.
 http://sourceforge.net/powerbar/db2/
 ___
 WiX-users mailing list
 WiX-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/wix-users



-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] InstallLevel has no effect when modifying an installation

2007-04-25 Thread Geoff Finger
My projects has three options in the Setup dialog. Typical with
InstallLevel 3, Admin with InstallLevel 1, and the Custom option
which takes it to the Custom Setup dialog with InstallLevel 3 as the
default.

This all works fine, but I've run into trouble trying to modify the
installation by running the msi file again later. If I install it at
the Admin level and then try to modify it to Typical nothing is
added. Likewise if I install at the Typical level and try to modify
it to Admin nothing is removed. In both cases selecting Custom and
manually selecting which files i want added or removed works fine.

Is there some additional work i need to do to get the Typical and
Admin settings working on modification, or is that not the way Wix
was meant to be used and should I have it skip the Setup dialog and
go straight to the Custom Setup dialog?

Thanks!

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Accessing the Source Directory

2007-03-23 Thread Geoff Finger
Most of the files are made part of the installer using the File
element, however there are two files that are an exception for two
reasons.

First, they're both part of the readme file which we want users to be
able to access before they actually install the product. If it were
just that we could include the file both in the installer and on the
disk (though that seems slightly inelegant,) but the second reason is
because historically these two files have been changed hours or even
minutes before the actual release. Not that I think that's a very wise
policy, but it's not anything I have any control over.

On 3/22/07, Rob Mensching [EMAIL PROTECTED] wrote:
 Why are you copying files from the original media instead of just using the 
 File element?

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Geoff Finger
 Sent: Thursday, March 22, 2007 3:45 PM
 To: wix-users@lists.sourceforge.net
 Subject: [WiX-users] Accessing the Source Directory

 I've been trying to figure out how to copy some files located in the
 directory the msi file is being run from to the Install directory, the
 big problem being that I couldn't find an easy way to fetch the value
 of the source directory.

 SourceDir leads to the root of the drive and CURRENTDIRECTORY isn't
 accessible through Wix. Searching through the archives let to a lot of
 suggestions involving the msi property OriginalDatabase, however that
 includes the file name so there is the added complication of writing a
 custom action to strip that off.

 While looking through the log files after some experiments however I
 noticed that SourceDir starts at the actual Source directory before
 being truncated to just the root. I managed to use the following
 custom action to grab the value before the truncation happens:

 CustomAction Id=ResetSetupDir Property=SETUPDIR Value=[SourceDir] /

 and in AdminUISequence:

 Custom Action=ResetSetupDir Before=ExecuteActionNOT Installed/Custom

 Since I didn't see that suggestion in response to any of the previous
 similar questions I thought it might be useful to share.

 -
 Take Surveys. Earn Cash. Influence the Future of IT
 Join SourceForge.net's Techsay panel and you'll get the chance to share your
 opinions on IT  business topics through brief surveys-and earn cash
 http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
 ___
 WiX-users mailing list
 WiX-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/wix-users


-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Accessing the Source Directory

2007-03-22 Thread Geoff Finger
I've been trying to figure out how to copy some files located in the
directory the msi file is being run from to the Install directory, the
big problem being that I couldn't find an easy way to fetch the value
of the source directory.

SourceDir leads to the root of the drive and CURRENTDIRECTORY isn't
accessible through Wix. Searching through the archives let to a lot of
suggestions involving the msi property OriginalDatabase, however that
includes the file name so there is the added complication of writing a
custom action to strip that off.

While looking through the log files after some experiments however I
noticed that SourceDir starts at the actual Source directory before
being truncated to just the root. I managed to use the following
custom action to grab the value before the truncation happens:

CustomAction Id=ResetSetupDir Property=SETUPDIR Value=[SourceDir] /

and in AdminUISequence:

Custom Action=ResetSetupDir Before=ExecuteActionNOT Installed/Custom

Since I didn't see that suggestion in response to any of the previous
similar questions I thought it might be useful to share.

-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Disabling a Feature

2007-03-16 Thread Geoff Finger
I have a feature that can only installed if .net 1.1 or higher is also
installed. The description for the feature indicates this requirement
but I don't want to trust to the users' good sense, some of them will
either not read the message or ignore it and get into trouble.

Searching through the archives showed several posts about disabling a
feature by using a Condition to set the Level to 0. I tried this and
it worked fine except that the feature wasn't just disabled, it was
entirely removed.

I'd like the feature to be visible but unchangeable from the won't be
installed state so the users can select it and see the requirement in
the description and then go install .net if necessary. Is there any
way to do this?

Thanks!

-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using InstallShield msm files causes an error

2007-03-14 Thread Geoff Finger
Yeah, changing the sequence of ResolveSource from 525 to 1025 fixed it, thanks!

Is there a way to override the sequence of an item in a Merge Module
when you reference it, or am I going to have to run Orca and fix it
manually every time I recompile?

On 3/14/07, Thomas Svare [EMAIL PROTECTED] wrote:
 That should work.  If you have any custom actions in your msm verify
 that the sequencing is after the cost standard actions.

 Thanks,
 Tom

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of Geoff
 Finger
 Sent: Wednesday, March 14, 2007 1:04 PM
 To: wix-users@lists.sourceforge.net
 Subject: [WiX-users] Using InstallShield msm files causes an error

 I'm trying to include a merge module from an older project that was
 made when we were using InstallShield to create our installations.

 When I try including it in my Wix project it compiles fine but when
 running it I get the error:

 Action start 16:32:36: ResolveSource.
 MSI (c) (EC:E0) [16:32:36:124]: Note: 1: 2732 2: 0
 DEBUG: Error 2732:  Directory Manager not initialized.
 The installer has encountered an unexpected error installing this
 package. This may indicate a problem with this package. The error code
 is 2732. The arguments are: 0, ,

 I tried using dark to decompile the msm file and recompiled it
 directly into a new Wix merge module, and that seems to work fine. So
 if necessary I can just do that instead, but it would be preferable to
 get the original msm working.

 Is there something extra I need to do in order to get InstallShield
 merge modules to work with Wix? Or are the two just fundamentally
 incompatible?

 (I tried searching the list archives for any info on this but I keep
 getting 500 - Internal Server Error)


-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Sequential msi installations

2007-01-31 Thread Geoff Finger
The program I'm working on needs to have either SQL 2005 or the SQL
Server Native Client installed. We've decided that if neither of those
have been installed we should give the user the option of installing
the Native Client after the basic installation is finished in order to
simplify things for them.

I've looked through the archives and am aware that concurrent
installation has been deprecated, so I've been trying to make it so
the SQL installation only happens after my installation has finished.

I put together the following code fragments just to test before I
worried about the UI or detecting an existing installation:

CustomAction Id=RunSQLNativeClientMsi
BinaryKey=SQLNativeClientMsi ExeCommand=/

InstallExecuteSequence
...
  Custom Action=RunSQLNativeClientMsi After=InstallFinalizeNOT
Installed/Custom
/InstallExecuteSequence

Binary Id=SQLNativeClientMsi src=sqlncli.msi/

However that results in the following error:

Action 11:59:58: RunSQLNativeClientMsi.
Action start 11:59:58: RunSQLNativeClientMsi.
MSI (s) (B0:A4) [11:59:59:228]: Note: 1: 1721 2: RunSQLNativeClientMsi
3: C:\WINDOWS\Installer\MSI9C0.tmp 4:
Error 1721. There is a problem with this Windows Installer package. A
program required for this install to complete could not be run.
Contact your support personnel or package vendor. Action:
RunSQLNativeClientMsi, location: C:\WINDOWS\Installer\MSI9C0.tmp,
command:
MSI (s) (B0:A4) [12:17:46:746]: Product: Server -- Error 1721. There
is a problem with this Windows Installer package. A program required
for this install to complete could not be run. Contact your support
personnel or package vendor. Action: RunSQLNativeClientMsi, location:
C:\WINDOWS\Installer\MSI9C0.tmp, command:
Action ended 12:17:46: RunSQLNativeClientMsi. Return value 3.
Action ended 12:17:46: INSTALL. Return value 3.

Am I doing something wrong, or it it just not possible to run msi
files with a Type 2 custom action? On the plus side the failure
doesn't cause a rollback which seems to indicate that I've at least
got the timing right.

If it's not possible this way then is there some other manner in which
I can trigger the second msi to run after the first one finishes?

Thanks!

-
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Problem with CDATA and default values in Conditionstatements

2007-01-30 Thread Geoff Finger
Swapping in lt;gt; fixed both issues! Thank you!

Why is it necessary to use that in some cases though when in other
spots I used  without any problem? Shouldn't using the CDATA
wrapper have prevented it from being an issue?

On 1/30/07, Albert van Peppen [EMAIL PROTECTED] wrote:
 Did you try using lt;gt; instead of  in your condition?

 Like:
 ConditionFOOVAR lt;gt; /Condition

 Iso:
 ConditionFOOVAR  /Condition

 Regards,

 Albert van Peppen


-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Problem with CDATA and default values in Condition statements

2007-01-29 Thread Geoff Finger
I can't get the  comparison to work in the CDATA statement for my
Condition elements and trying to set a default value on the property
that is being tested is breaking them as well.

I have a radio button selection during the setup that determines
whether the service that is being installed will be run by the system
or a user, with elements such as this:

Control Id=AccountName Type=Edit X=120 Y=85 Width=150
Height=18 TabSkip=no Property=SVCACCOUNTNAME
  Condition Action=disableSVCLOGONTYPE = System/Condition
  Condition Action=enableSVCLOGONTYPE = User/Condition
/Control

I haven't determined a better way to handle the actual installation
than to have two almost identical components,  one with Account and
Password attributes in the ServiceInstall element and the other
without.

In the feature I have two sub-features that I'm trying to choose
between using Condition elements. I've gotten the following code which
works:

Feature Id=SystemService Display=hidden TypicalDefault=install Level=1
  ComponentRef Id=SystemServiceComponent/
  Condition Level=0![CDATA[SVCLOGONTYPE = User]]/Condition
/Feature
Feature Id=UserService Display=hidden TypicalDefault=install Level=1
  ComponentRef Id=UserServiceComponent/
  Condition Level=0![CDATA[SVCLOGONTYPE = System]]/Condition
/Feature

There are two changes I'd like to make, I'd like to change it so that
the condition for disabling the SystemService feature is that
SVCLOGONTYPE is not set to System, rather than disabling it if it is
set to User. However if I change the = to  and swap the names
then no matter which option I select neither gets installed. The log
file shows

Feature: SystemService; Installed: Absent;   Request: Null;   Action: Null
Feature: UserService; Installed: Absent;   Request: Null;   Action: Null

but as far as I can tell there's no logging of the evaluation of the
Condition statement so I can't tell what's going wrong.

Second I want to have the radio buttons default to System rather
than neither being selected when I get to that page. However if I add

Property Id=SVCLOGONTYPESystem/Property

then again neither element gets installed and the same messages show
up in the log. There are also messages like

PROPERTY CHANGE: Modifying SVCLOGONTYPE property. Its current value is
'System'. Its new value: 'User'.

So I know that the default is being used and then getting overridden,
but again there's no debug info about the Condition evaluation so I
don't know why neither feature is being installed.

Any help on how to fix this, especially the default property value, or
some other workaround on how to make the dialog start with System
selected, would be greatly appreciated!

Thanks!

-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] How to integarte an .cat file

2007-01-25 Thread Geoff Finger
I'm not sure what steps you've already completed so here's the entire
process I followed. In my case I was using MS VS 2005, obviously some
steps my have to be addapted depending on the enviroment you're
working under.

First you have to create a key if you don't have one already:

makecert -n CN=CompanyName -sv PVKFile.pvk CertificateFile.cer
-len 2048 -r

pvk2pfx.exe -pvk PVKFile.pvk -spc CertificateFile.cer -pfx
PFXFile.pfx [-po Password]

pktextract CertificateFile.cer

The password, if any, will be the one you enter for the first step.
The last step generates the public key token you'll be needing later.

You'll need a manifest file, you can write it yourself or take the
easy way out by compiling the project once after going to project
properties and selecting General-Manifest. Set the Assembly Identity
to:

DllName, type=win32, version=VersionNumber,
processorArchitecture=X86, publicKeyToken=PublicKeyToken

DllName is the name without the extension, VersionNumber is of the
form 1.2.3.4, and the PublicKeyToken is the one you got from
pktextract. Make sure you have Embed Manidest under Input and
Output set to no for this first time.

Depending on the compiler you're using you may need to edit the
resulting manifest file and add the line

file name=dllFile.dll
hash= hashalg=SHA1/

before any dependency elements. the file name is the final name of the
file, with the extension. The value of the hash bit is unimportant
because it will be overwritten later. You can save the resulting
manifest file and reuse it for the following steps multiple times as
long as none of the fundamental values change (file name, version
number, encryption key, etc)

You then run

mt.exe -manifest dllFile.dll.manifest -hashupdate -makecdfs

which updates the hash value and creates a cdf ffile. Next you run:

makecat -v dllFile.dll.manifest.cdf

to create the cat file. FInally you run

signtool sign /f PFXFile.pfx [/p password] /t
http://timestamp.verisign.com/scripts/timestamp.dll dllFile.dll.cat

to sign  the catalog file using the key.

Now the wix bit, which I had a lot of trouble with and sent a couple
messages to the list about without resulting in much progress. Once I
figured out what the missiing bits were however it turned out to be
pretty simple:

Component Id=DllComponent Guid=MYGUID-#
File Id=ManFile Name=dllFile.man LongName=dllFile.dll.manifest
 src=Path\dllFile.dll.manifest Vital=yes DiskId=1
/File
File Id=CatFile Name=dllFile.cat LongName=dllFile.dll.cat
 src=Path\dllFile.dll.cat Vital=yes DiskId=1
/File
File Id=DllFile Name=dllFile.dll LongName=dllFile.dll
KeyPath=yes
 src=Path\dllFile.dll Vital=yes DiskId=1
Assembly=win32 AssemblyManifest=ManFile
/File
/Component

And of course finally once you've installed your new assembly you need
to reference it in any other projects that will be using it by going
to Project Options-Linker-Manifest File-Additional Manifest
Dependencies and adding

type='win32' name='DllName' version='VersionNumber'
processorArchitecture='X86' publicKeyToken='PublicKeyToken'
language='*'

There are a couple pages that halped me figure this stuff out if you
want to take a look at them:

http://msdn2.microsoft.com/en-us/library/aa376307.aspx
http://msdn2.microsoft.com/en-us/library/ms235512.aspx
and especially:
http://msdn2.microsoft.com/en-gb/library/aa374228.aspx


On 1/25/07, Frank Büttner [EMAIL PROTECTED] wrote:
 How can I integrate an .cat file in my merge module.
 This file is needed for my side-by-side assembly.
 Simple use the File Tag will get the error:
 error LGHT0104 : Not a valid manifest file;
 How can I do this??


 -
 Take Surveys. Earn Cash. Influence the Future of IT
 Join SourceForge.net's Techsay panel and you'll get the chance to share your
 opinions on IT  business topics through brief surveys - and earn cash
 http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV

 ___
 WiX-users mailing list
 WiX-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/wix-users





-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Installing shared assemblies

2006-10-27 Thread Geoff Finger

Thanks Mike for your earlier help with private assemblies. We've dropped 
the idea of doing anything special with them but as expected we've moved 
on to shared assemblies so I've got some more questions for anyone who can 
help.

I've taken one of our old COM dlls and added an AssemblyInfo.cpp with what 
I hope is the right Assembly values. The debug version still builds as a 
normal dll which I then use to generate the manifest for the release 
version (I'm unsure if there's anyway around this.)

There's a warning that embedding the manifest invalidates the signature, 
but resigning it sn works, as does adding it to the GAC directly with 
gacutil.

When I ran heat on the dll it generates a a file id line and a whole lof 
of Interface Id lines. I modified them to fit the merge module slightly as 
follows:

Directory Id=TARGETDIR Name=SourceDir
  Directory Id=Assembly Name=Assembly
Component Id=MyModuleComponent 
Guid=6C291D26-C78D-45e4-B05E-27EC5EEA97A7
  File Id=SO80.dll Name=SO80.dll Assembly=.net 
  KeyPath=yes 
  Source=..\..\libs\SO\Build\$(var.PLATFORM)\Release\SO80.dll
TypeLib Id={DC37D6AD-1489-45B9-8F1E-162CF65E1FB2} 
Description=Server 
Objects 8.0 HelpDirectory=Assembly Language=0 
MajorVersion=1 MinorVersion=0
  Interface Id={0118AF21-A6C1-44EE-9AAE-2C48E634DE17} 
  Name=IAnnotation 
  ProxyStubClassId={00020424---C000-0046} 
  ProxyStubClassId32={00020424---C000-0046} /
etc.

If I use that then upon instalation I get Could not register type library 
for file C:\Assembly\SO80.dll.

If I remove the Interface lines it seems to install fine and it shows up 
in the GAC when I check with .Net Framework 2.0 Configuration. However 
when I try to use the assembly in VBS with the line set s = 
CreateObject(SO80.Application) (which worked with the old dll) I get 
ActiveX Component can't create object: 'SO80.Application' Code: 800A01AD

I know that if you're dealing with a .Net assembly you have to make a COM 
interop, but I thought that was what the manifest was for in an assembly 
that was already COM. I had the initial impression that the purpose of the 
GAC was to eliminate storing information in the registry, but I've been 
informed that in order for COM objects to be accessible there still needs 
to be information in the registry which isn't currently showing up when I 
run the installation. Is gacutil/msi supposed to have done the 
registration, meaning that my assembly is just broken, or was that 
something I needed to include in wix? If it's the Interface stuff that I 
had to remove then how can I include it without getting the above error?

Thanks for any help!


-
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Private Assemblies with Wix

2006-10-20 Thread Geoff Finger
On Fri, 20 Oct 2006, Mike Dimmick wrote:

 
 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of Geoff Finger
 Sent: 20 October 2006 00:54
 To: wix-users@lists.sourceforge.net
 Subject: [WiX-users] Private Assemblies with Wix
 
 
 I hope this email gets through (several earlier emails sent from my gmail
 account resulted in SMTP Error (state 9): 451-Could not complete sender
 verify callout)
 
 I've been working on the Wix installer for a project at my company for the
 past couple weeks, but the project manager has decided that we should
 install all our private dll's and exe's as assemblies. These files aren't
 actually compiled as assemblies but he thinks we may be able to do so
 anyways by making them private assemblies since those don't require signing.
 
 I haven't been able to find much documentation about assemblies here or in
 the tutorial on tramontana, but I've pieced together the following in the
 primary feature in the main wxs file:
 
 Component Id=CrDllComponent Guid=MyGuid Win64=$(var.IS64)
   File Id=CrDllFile Name=cr.dll KeyPath=yes
   src=..\..\repository\Build\$(var.PLATFORM)\Release\cr.dll
 Vital=yes 
   DiskId=1 Assembly=.net
   AssemblyName Id=Name Value=Assembly/
   AssemblyName Id=FileVersion
 Value=$(var.PRODUCT_VERSION)/
   AssemblyName Id=Culture Value=neutral /
   /File
 /Component
 
 --8--snip--8--
 
 I have a general rule I follow. It goes, 'if it hurts when you do this,
 don't do that.'
 
 If you're talking about .NET, anything compiled to the CLR is automatically
 an assembly. If an assembly is strong-named, the actual target version of
 the assembly is compiled into the referencing assembly. At run-time, the
 Framework will look for strong-named assemblies in the GAC first, then in
 the local folder, then under the culture, a 'bin' folder, then
 'bin\culture', then fail. For a non-strong-named-assembly, the GAC is not
 checked. Generally, I only sign an assembly if I actually intend it to be
 shared, and install it to the GAC; if it's only intended for one
 application, or not designed for compatibility between versions, I don't
 sign it and install to the application directory. These can only be serviced
 as part of an application.
 
 The Assembly=.net attribute instructs Windows Installer to add the
 assembly to the GAC. You cannot do this if it is not strongly-named - the
 Framework will not let you (and as I said, it would be pointless to try
 since the Framework won't look there for the assembly anyway).
 
 Tell your project manager that the technology does not support his
 suggestion.

Yes, we're using .Net so I was told that all the files already have an 
internal manifest so I shouldn't need to worry about an external manifest 
file. We intend to make the public dll's shared at some point in the 
future, so I think the intent is to be consistent by treating all the 
dll's and exe's as assemblies, either shared or private.

So would the above code be correct if it were a shared dll? (If I added a 
publicKeyToken value at least) What do i need to change in order to 
have cr.dll treated as a private assembly? I tried just changing .net 
to win32, however for some reason that caused light.exe to start 
generating errors about other unrelated files in other features, saying 
file.ext : error LGHT0124 : Not a valid manifest file; detail: Data at 
the root level is invalid. Line 1, position 1.

And i'd still like to know if thee are actually any good tutorials on the 
subject since even if I end up having to give up on the private assemblies 
I'll need to figure out how to handle the shared assemblies later.

Thanks!


-
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


[WiX-users] Private Assemblies with Wix

2006-10-19 Thread Geoff Finger

I hope this email gets through (several earlier emails sent from my gmail 
account resulted in SMTP Error (state 9): 451-Could not complete sender 
verify callout)

I've been working on the Wix installer for a project at my company for the 
past couple weeks, but the project manager has decided that we should 
install all our private dll's and exe's as assemblies. These files aren't 
actually compiled as assemblies but he thinks we may be able to do so 
anyways by making them private assemblies since those don't require 
signing.

I haven't been able to find much documentation about assemblies here or in 
the tutorial on tramontana, but I've pieced together the following in 
the primary feature in the main wxs file:

Component Id=CrDllComponent Guid=MyGuid Win64=$(var.IS64)
File Id=CrDllFile Name=cr.dll KeyPath=yes
src=..\..\repository\Build\$(var.PLATFORM)\Release\cr.dll Vital=yes 
DiskId=1 Assembly=.net
AssemblyName Id=Name Value=Assembly/
AssemblyName Id=FileVersion Value=$(var.PRODUCT_VERSION)/
AssemblyName Id=Culture Value=neutral /
/File
/Component

This compiles fine and when I run it it starts to install, but partway 
through it gets a 2908 error and then says that it couldn't install 
cr.dll. The relevant bit from the log file is:

MSI (s) (20:18) [16:44:59:283]: Executing op: 
ComponentRegister(ComponentId={MyGuid},KeyPath=\Assembly,FileVersion=0.0.0001,Culture=neutral,State=3,,Disk=1,SharedDllRefCount=0,BinaryType=0)
1: {91A299CF-3538-486C-87EE-1F0DD79ECB3F} 2: {MyGuid} 3: 
\Assembly,FileVersion=0.0.0001,Culture=neutral 
MSI (s) (20:18) [16:44:59:298]: MSCOREE already loaded, using loaded copy
MSI (s) (20:18) [16:44:59:330]: Assembly Error:The given assembly name or 
codebase, '%1', was invalid.
MSI (s) (20:18) [16:44:59:330]: Note: 1: 1935 2:  3: 0x80131047 4:  5: 
CreateAssemblyNameObject 6: 
CrDll,FileVersion=0.0.0001,language=en,processArchitecture=x86,Culture=neutral
 
DEBUG: Error 2908:  Could not register component {MyGuid}.
The installer has encountered an unexpected error installing this package. 
This may indicate a problem with this package. The error code is 2908. The 
arguments are: {MyGuid}, , 
MSI (s) (20:18) [16:45:12:673]: Product: Laserfiche Server 8.1 -- The 
installer has encountered an unexpected error installing this package. 
This may indicate a problem with this package. The error code is 2908. The 
arguments are: {MyGuid}, , 

I'd appreciate any advice about what I'm doing wrong here, and would love 
to know about any tutorials on installing assemblies with Wix that might 
be out there on the net that I just haven't found yet. Thanks!


-
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users