cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
CavanMcCloud
Level 4

Need Updated Processes

There are two processes I need to put into place on my install package... I'm sure these are commonly done processes for installation packages...

MSDN has write-ups on both of them... but their implementation does not seem to work on InstallShield 2009 Premium...

Package Type: Basic MSI Project

Program: InstallShield 2009 Premium

Issues: Firewall Exceptions and Vista Game Explorer

Firewall Exceptions

http://msdn.microsoft.com/en-us/library/bb173455(VS.85).aspx

This MSDN article does still work with regards to the "Integrating using InstallShield InstallScript"... but the "Integrating into Windows Installer" does not... I do not know enough about InstallScript to be able to modify the working script code to work with a Basic MSI Project.

Any help would be greatly appreciated in this issue... Thanks.

Vista Game Explorer

http://msdn.microsoft.com/en-us/library/bb206359(VS.85).aspx

I have not been able to get this process to function correctly in any of the recommened Intergration types... it falls into the realm of not knowing enough about InstallShield Script language to modify the script language to work correctly on the Basic MSI Project.

Any help would be greatly appreciated in this second issue... Thanks.
Labels (1)
0 Kudos
(6) Replies
CavanMcCloud
Level 4

24hr bump... :cool:
0 Kudos
CavanMcCloud
Level 4

Okay... got the Firewall Exception to work...

Only have the Windows Vista Game Explorer one to work on...

I have the following Install Script....

[CODE]
typedef GUID
begin
LONG Data1;
SHORT Data2;
SHORT Data3;
CHAR Data4(8);
end;

prototype LONG GameuxInstallHelper.AddToGameExplorerW( WSTRING, WSTRING, NUMBER, GUID POINTER );
prototype LONG GameuxInstallHelper.RemoveFromGameExplorer( GUID POINTER );
prototype LONG GameuxInstallHelper.RetrieveGUIDForApplicationW( WSTRING, GUID POINTER );
prototype LONG GameuxInstallHelper.GenerateGUID( GUID POINTER );
prototype LONG GameuxInstallHelper.CreateTaskW( NUMBER, GUID POINTER, NUMBER, NUMBER, WSTRING, WSTRING, WSTRING );
prototype LONG GameuxInstallHelper.RemoveTasks( GUID POINTER );
prototype LONG GameuxInstallHelper.SetupRichSavedGamesW( WSTRING, WSTRING, WSTRING );
prototype LONG GameuxInstallHelper.RemoveRichSavedGamesW( WSTRING );

function OnMoved()

WSTRING gdfbin[256];
WSTRING path[256];
NUMBER scope;
NUMBER supportTask;
NUMBER playTask;
GUID guid;
GUID POINTER pGuid;

begin

if !MAINTENANCE then

UseDLL( TARGETDIR ^ "GameuxInstallHelper.dll" );
UseDLL( WINSYSDIR ^ "OLE32.dll" );

path = TARGETDIR;
gdfbin = TARGETDIR ^ "bin\\ExampleGame.exe"; // TODO: Change this to point to binary containing the GDF
pGuid = &guid;
playTask = 0;
supportTask = 1;

if ALLUSERS == 1 then
scope = 3;
else
scope = 2;
endif;

GameuxInstallHelper.GenerateGUID( pGuid );
GameuxInstallHelper.AddToGameExplorerW( gdfbin, path, scope, pGuid );
GameuxInstallHelper.CreateTaskW( scope, pGuid, playTask, 0, "Play", gdfbin, "" );

UnUseDLL( TARGETDIR ^ "GameuxInstallHelper.dll" );
UnUseDLL( WINSYSDIR ^ "OLE32.dll" );

endif;

end;
[/CODE]

How do I change this to a Custom Action?? Where do I put it in the process flow (I'm assuming AFTER Installed Files...)?? This should be a Deferred action I believe...
0 Kudos
Christopher_Pai
Level 16

To do it right, you'll need several custom actions and a custom table. Your table will need several columns to describe the possible game entries.

Then you'll have an immeadiate CA that queries the table, evaluates conditions and properties ( such as ALLUSERS ) and formats several custom action data properties for your deferred CAs to consume. Your deferred CAs ( rollback, install, uninstall ) will read these properties and do the heavy work of calling the APIs you document.

BTW, you might want to consider checking out WiX for this:

http://www.joyofsetup.com/2008/04/22/new-wix-feature-gaming-extension/

You could make a merge module project in WiX and then consume it with InstallShield and probably simplify the whole process.
0 Kudos
CavanMcCloud
Level 4

Thanks for the advice Chris... I created a quick simple WiX Merge Module... finally got it to build and create a MSM file...

But... it's not working... :confused:




xmlns:gaming="http://schemas.microsoft.com/wix/GamingExtension">

















Not really looking for help in regard to getting it to working... I am SO ready to PUNT on this thing...

Why it's not simply an option somewhere on the latest Windows Instarller 4.5 is a mystery to me....
0 Kudos
Christopher_Pai
Level 16

So add the merge module to a feature and do a right click | properties and associate the merge module to INSTALLDIR.

Build it and test. Do you get the expected result?

Ya, it would be nice if the Windows Installer team would get off their collective ass and extend the functionality of the SDK. They seem perfectly content ( or simply scared to make code changes ) to allow the tools vendors to extend with quasi-standard-action custom actions instead of baking it in native.

Not a very popular opinion but it's the truth.
0 Kudos
thanatos83
Level 5

so there is not necesary embed a GDF file into a resource of binary to do this?, only i need to put some custom actions and properties table???

I only have an executable and CA inside this...
0 Kudos