Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Problem to create patch includes dynamic file link


17 replies to this topic

Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 30 August 2012 - 13:26

Hi,

I've an installation file that contains dozens of components – Only three of them are define as dynamic file linking.
The setup is already released to many customers and I can't change/fix it.
Now I need to create a patch and each time it failed with the following error:

ISDEV : warning Val0015: The CreateFolder table contains new content. Therefore, if you are packaging this upgrade as a patch, you will not be able to make it an uninstallable patch.

New ID are generated for the dynamic files linking in each build and therefore I got this error.
Does anyone have an idea how to solved this problem? How can I make any work around to create patches "includes" dynamic file linking
Please note – I will have to create many patches for this version so one time solution is not good for me

Please advice
Many Thanks


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 September 2012 - 14:40

Is it really a requiremtn for you to be able to uninstall the patch?

Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 02 September 2012 - 15:50

Yes - i must enable to remove the patch, Why do you think its a problem?

I even tried to made the following workaround:

1) Backup the MainSetup.ism to MainSetup_ORIG.ism
2) Open MainSetup.ism
3) Physically deleted three components which define as Dynamic file links! Not by RemoveFiles table, deleted them so that there will not be a part of the RTM setup!
4) Rebuild MainSetup.ism setup.
4) Copy MainSetup.ism to UpgradeSetup.ism
5) Generate new Package Code and update three exe.
6) Compile the UpgradeSetup.ism
7) Create patch that the previous setup is MainSetup.msi (Exclude the three components which define as Dynamic file links!) and the latest is UpgradeSetup.msi

Then I installed the patch on a machine that already has the original installation setup which released to the customer (INCLUDE the three components which define as Dynamic file links!).
The updated three executables were refreshed on the environment but in the ARP I didn't see the patch to remove ("Allow patch to be uninstalled" check box was set on).

What do you say? Do you think that this solution\Work around makes sense and could work?

Where can I see in the registry that the patch is installed?

Thanks.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 September 2012 - 16:21

QUOTE
Yes - i must enable to remove the patch, Why do you think its a problem?
Many patches can't be uninstalled, so I thought maybe you could live with this limitation.

Did you add or change any *folders* in the new version?
Did you add or change any files in the new version?
Did you remove any files or folders?
Or did you only change some existing files that are included ion dynamic components?

When you run the build wizard, do you fill in the Patch Optimization field? (see screenshot). It should help keeping the IDs unchanged.

Attached Images

  • patch_optimization.jpg


Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 02 September 2012 - 18:07

No - i didn't add/change any folders in the new version - just change some existing files that are included in STATIC components.
The dynamic components are only for the initial setup and very likely that they will not change during the life time of the version - Therefore I asked if it possible to produce the same initial setup file, without these components, and install its like a patch on top of the original installation.
off course i prefer to fix it in the original setup without workaround.

As i remember i fill in the Patch Optimization field.

According to your questions, it's not possible to add or change any *folders* in the new version, add or change any files in the new version, remove any files or folders or change some existing files that are included in dynamic components?

Appreciate your help.
Thanks

Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 04 September 2012 - 16:09

Thanks Stefen, fill in the Patch Optimization field solved the dynamic file linking problem (CreateFolder) – Do you see any future problem with that?
Now I can:
1) Create an error-free .msp file.
2) The patch installation ended with no error and the target objects were refreshed as expected!
3) I can't see the patch in the ARP (Uninstall an update section) - Allow patch to be uninstalled check box was set on!

If I try to uninstall the patch by the following msiexec command I received "The patch is not applied to this product." error message

CODE
Msiexec /package [ProductCode] uninstall [PackageCode]


I can't see entry of this patch under the following registry path as well:

CODE
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Patches\<SQUID>


I cannot find any mention of my Patch on the machine!

At the time we needed to changed the appearance of the ARP with the legacy single "Change\Remove" and we've done it by adding/create the following registry keys and values in the RTM setup:
CODE

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\[Product Name]
DisplayName = [ProductName]
UninstallString = [SystemFolder]msiexec.exe /i [ProductCode]
DisplayIcon = [INSTALLDIR]yourmain.exe
HelpLink = [ARPHELPLINK]
InstallLocation = [INSTALLDIR]
Publisher = [Manufacturer]
UninstallPath = [SystemFolder]msiexec.exe /i [ProductCode]
DisplayVersion = [ProductVersion]
InstallSource = [SourceDir]
Language = #[ProductLanguage]
URLInfoAbout = [ARPURLINFOABOUT]

Is it possible that because of this change, It affected on the patch behavior?
Do you have other idea why I can't uninstall the patch? Or find any registration of it in other place on the machine?
I didn't find MsiPatchMetadata table in my update - Can it affect / cause the problem?

Please advice
Thanks


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 05 September 2012 - 11:19

QUOTE
The MsiPatchMetadata Table contains information about a Windows Installer patch that is required to remove the patch and that is used by Add/Remove Programs.

Patches installed without this table present in the patch database (.msp file) cannot be removed, and are missing some information from Add/Remove Programs. The table must be in the database of the patch file and not in a transform in the patch.


I don't know why this table isn't included in your msp, but note that it requires MSI 3.0 or higher, so if your schema is 200 patch uninstall isn't available.

Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 05 September 2012 - 11:29

The Machine where I've installed the setup file includes MSI 5.0 - So this isn't the issue.
I'm trying to create the first minor upgrade on the RTM version.
Do you think that the missing MsiPatchMetadata Table can cause the problem? can i add it manually?
Did i looking for the patch installation in the registry in the correct path?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 05 September 2012 - 12:06

QUOTE
The Machine where I've installed the setup file includes MSI 5.0 - So this isn't the issue.

But what's the Schema setting of your .msi? If it 200 this means it should be compatible with MSI 2.0

Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 09 September 2012 - 15:26

My setting Schema of my .msi is 200 - But how it's related?


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 11 September 2012 - 09:29

Schema specifies the version of MSI that the package is compatible with. Uninstallable patches were not supported in MSI 2.0, this functionality was added in a later version.

Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 11 September 2012 - 15:09

Hi,

I realized my problem but not exactly weary how to fix it - I'd be happy to accept your offer.
When I wrote my setup I wanted to provide a full user interface for all the maintenance operations. This I have done by using the "Uninstall/Change" button instead of the three Modify\Repair\Uninstall buttons.
I made it according to the instructions in the attached links:

http://www.advancedi...nge-button.html and http://www.microsoft...e-programs.aspx

After installing the product the following entries exist in the registry:

CODE
       
1) Software\Microsoft\Windows\CurrentVersion\installer\UserData\<ID>\Products\[GUID]
                       Features
                       InstallProperties
                       Patches [b][i][GUID of my patch][/i][/b]
                       Usage

CODE
         
2) 2.1  Software\Microsoft\Windows\CurrentVersion\Uninstall\[PRODUCT_CODE]       "SystemComponent"=dword:00000001" Turn off ARP
   
   2.2  Software\Microsoft\Windows\CurrentVersion\Uninstall\[MyApplication] - This One appears in the Add remove program


The problems:

1. If I design a patch, the patch refers only to 2.1 above, and not 2.2.
Since 2.1 contains "SystemComponent = 1", it does not appear in the ARP, thus the patch does not appear in ARP.
(Only 2.2 remains in the ARP – without the installed patch.)
Therefore I can't uninstall or see the installed patches.

2. If I change to " SystemComponent = 0" (in 2.1), then I see in ARP two entries (one for 2.1 and one for 2.2). The patch now appears, under 2.1 (when searching for installed updates).
However, 2.1 has the default Modify\Repair\Uninstall buttons and therefore we don't want it to appear.

How do I link the installed patches to the correct registry entry (which is 2.2)?
Or do you have another approach?

Thanks.




Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 11 September 2012 - 16:19

I don't think you can put the patch under your custom uninstall entry. Maybe you could make an additional custom entry for the patch, but that's not really nice.

Instead of marking the package as ARPSYSTEMCOMPONENT, you could use ARPNOREMOVE (and ARPNOREPAIR if you also want to hide the Repair button). Now with only the Modify button, users will always enter the full UI and then select the desired operation from the MaintenanceType dialog.

Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 12 September 2012 - 07:25

Ok, I tried to recover the Change Button as part of the patch installation by made the following step:

1) Delete my custom uninstall entry using RemoveRegistry:
Software\Microsoft\Windows\CurrentVersion\Uninstall\[MyApplication]
Successfully passed

2) Change the value of "SystemComponent" to "0" in order to unhide items from ARP.
Change it under: Software\Microsoft\Windows\CurrentVersion\Uninstall\[PRODUCT_CODE]
I tried to change it in two ways:
• System Configuration -> Registry ….
• Change property ARPSYSTEMCOMPONENT to 0
Failed, I could not change its value!

3) Change the value of "Disable Change button" to "No" from General Information
Failed, I could not change its value

Any Idea how can I do it?

Thanks,



Barvaz

Barvaz
  • Full Members
  • 37 posts

Posted 12 September 2012 - 13:10

How can I changed the value of any existing registry key by patch? Can I?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 12 September 2012 - 17:22

You should be able to set a new value to an existing registry entry. But I'm not sure you can change the system component setting during a patch.

Sakthi

Sakthi
  • Full Members
  • 2 posts

Posted 13 August 2014 - 10:35

I fill in the Patch Optimization with previous msi/msm. but still I see CreateFolder table with new entries of dynamically linked subfolders  :mellow:

 

Removal of dynamically linked subfolder are the only way to get ride of this error? I have ~200 subfolder from some third party software  :(

 

are there any other alternatives to get ride of this patch build error?

 

many thanks in advance.

 

QUOTE Yes - i must enable to remove the patch, Why do you think its a problem?
Many patches can't be uninstalled, so I thought maybe you could live with this limitation.

Did you add or change any *folders* in the new version?
Did you add or change any files in the new version?
Did you remove any files or folders?
Or did you only change some existing files that are included ion dynamic components?

When you run the build wizard, do you fill in the Patch Optimization field? (see screenshot). It should help keeping the IDs unchanged.

 

 



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 19 August 2014 - 08:46

You can drag your folder structure from source to destionation view and InstallShield will automatically create components for you.