Solved

How to modify MSI using Orca to hard-code location of startup shortcut

Posted on 2009-04-07
16
5,084 Views
Last Modified: 2013-11-14
My MSI currently inserts the startup shortcut for the app in the Startup Menu.

I'd like to modify the MSI so that the startup shortcut gets inserted in a different hard-coded location (C:\Documents and Settings\All Users\Start Menu\Programs\Company Applications) rather than being inserted in the currently-defined StartMenuFolder.

I've attached screen shots of the Orca Shortcut and Directory tables.
OrcaScreenShots.png
0
Comment
Question by:wjm013
  • 9
  • 7
16 Comments
 
LVL 3

Expert Comment

by:MSI_installer_expert
ID: 24094883
In the Directory table create the following line:
Directory: newfolder1
Directory Parent: ProgramMenuFolder
Default Dir: COMPAN~1|Company Applications

In the Shortcut table simply chage the Directory value from StartMenuFolder (as shown in printscreen) to newfolder1

Hope this helps.
0
 

Author Comment

by:wjm013
ID: 24098638
I get "Internal Error 2705. Directory" when I launch the MSI.

Orca validation reports an ICE03 error: "Not a valid foreign key; Table:Directory, Column: Directory_Parent, Key(s):newfolder1"

The "ProgramMenuFolder" text appears in red in the Orca view of the Directory table.

Please see the attached file.
OrcaScreenShot03.png
0
 
LVL 3

Expert Comment

by:MSI_installer_expert
ID: 24104957
You encounter this validation error, because the ProgramMenuFolder is not present itself in the directory table. Normally it should be there for any MSI.

Try to add this one in the Directory table too

Directory: ProgramMenuFolder
Directory parent: TARGETDIR
Default Dir:   .:Programs


0
 

Author Comment

by:wjm013
ID: 24106965
After adding the ProgramMenuFolder entry in Directory the following error appears when I validate:

ICE64: The directory newfolder1 is in the user profile but is not listed in the RemoveFile table.

I've added the RemoveFile table in Orca and see that there are 5 fields to fill out which are listed below along with descriptions from the SDK but I'm unsure what to insert in these fields:
1 - FileKey:
- Primary key used to identify this particular table entry.
2 - Component:
- External key the first column of the Component table. This field references the component that controls the file to be removed.
3 - FileName:
- This column contains the localizable name of the file to be removed. If this column is null, then the specified folder will be removed if it is empty. All of the files that match the wildcard will be removed from the specified directory.
4 - DirProperty:
- Name of a property whose value is assumed to resolve to the full path to the folder of the file to be removed. The property can be the name of a directory in the Directory table, a property set by the AppSearch table, or any other property that represents a full path.
5 - InstallMode:  
- Must be one of the following:
a - Remove only when the associated component is being installed.
b - Remove only when the associated component is being removed.
c - Remove in either of the above cases.
0
 
LVL 3

Expert Comment

by:MSI_installer_expert
ID: 24107235
It is just a validation warning that I think you can ignore and proceed with installing
If not just add the below info in the RemoveFile table


1 value : any string you desire I suggest: remove1
2 value : any component that will be uninstalled at uninstall... must probably all of them will... so just add a component (From the Component table)
3 empty
4 value : newfolder1
5 value : 2
0
 

Author Comment

by:wjm013
ID: 24107530
On second though, I don't want to remove the entire directory since it will contain other user shortcuts.
0
 
LVL 3

Expert Comment

by:MSI_installer_expert
ID: 24107585
You can use it, with no concerns, since the RemoveFile Table only deletes folders if they are empty.
Anyway that is just a validation error, that can be ignored.

Is the shortcut now created in the desired folder?
0
 

Author Comment

by:wjm013
ID: 24107597
I ignored the ICE64 error and did not add the RemoveFile table.

On installation I'm getting "Internal Error 2356. Instal01.cab"
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:wjm013
ID: 24107637
Since the installation does not complete, the shortcut is not being created.
0
 
LVL 3

Expert Comment

by:MSI_installer_expert
ID: 24107727
The installation is now failing most probably because Instal01.cab is not found near your MSI file. Can't give you more info though...
Debugging with ORCA can be diffucult some times...
0
 

Author Comment

by:wjm013
ID: 24107813
My original MSI, that is the one without the "ProgramMenuFolder" and "newfolder1" entries in the Directory table and without the change in the Shortcut table from "StartMenuFolder" to "newfolder1" installs successfully.

I wonder if it's necessary to modify my VB source code to change the location of the shortcut?

Thanks for your help.



0
 
LVL 3

Expert Comment

by:MSI_installer_expert
ID: 24107855
Then try to take the old MSI , that installs sucesfully, and make the same modifications over again.
Are the files that your MSI installs included in a cab that is outside... near the MSI file? Make sure that the cabs are always near the MSI file that you edit.
0
 

Author Comment

by:wjm013
ID: 24108106
My original MSI was created with the cab file compressed into the MSI so I recreated it with the cab file outside the MSI and made the changes to the Directory and Shortcut tables with Orca.

Now the installation completes without error but the shortcut still gets inserted in the old location:
                   C:\Documents and Settings\[myname]\Start Menu\Programs\Company Applications
rather than where I want it in
                  C:\Documents and Settings\All Users\Start Menu\Programs\Company Applications


0
 
LVL 3

Accepted Solution

by:
MSI_installer_expert earned 500 total points
ID: 24108513
In the Property Table add the property ALLUSERS with value: 1
0
 

Author Comment

by:wjm013
ID: 24108907
Excellent!

The shortcut is now where I want it.

Thank you.

0
 

Author Closing Comment

by:wjm013
ID: 31567799
Thanks again for your help.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

One of the most frequently asked questions on EE in the "Windows Installer" zone is how to eliminate self-triggered installation of some product.  The problem occurs when, suddenly, whenever a certain application is launched, or even when a folder i…
I have been scripting applications way too long and can never remember how to create an ISS file.  So I decided to write this article to act as my own knowledge base for future reference, and hope you will also benefit. An ISS file is a response …
This video discusses moving either the default database or any database to a new volume.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now