Announcement

Collapse
No announcement yet.

"VisualPatch.CheckFolderVersion" returns target version

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • "VisualPatch.CheckFolderVersion" returns target version

    Software: Visual Patch 3.7
    Attempting to: Upgrade an ASP.NET application with database upgrade

    I am trying to upgrade from v1.0 to v2.0 (these are my tab names). I use registry to detect existing installation. My code is pasted below

    Code:
    		local mainKey = HKEY_LOCAL_MACHINE;
    		local subKey = SessionVar.Expand("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\%CompanyName% %ProductName%");
    		local valueName = "InstallLocation";
    		local folderPath = Registry.GetValue(mainKey, subKey, valueName);
    		local folderBinPath = nil;
    		if folderPath ~= nil then
    			folderBinPath = folderPath .. "\\bin";
    		end
    		g_InstalledVersion = VisualPatch.CheckFolderVersion("%AppFolder%", folderBinPath);
    I am trying locate my key file in the 'bin' folder inside the 'folderPath' returned from registry. 'g_InstalledVersion' is always returned as "2.0" and i expect it to be "1.0". So my 'current version' and 'target version' are always same and i ends up in 'Software is Current' screen. Please help.

  • #2
    VisualPatch.CheckFolderVersion() will return the name of the tab containing the files which were detected in the target folder. If the function is returning "2.0", then these files which you are using as key files, in that specific folder, have the same MD5 checksum as the ones you placed in your "2.0" tab in the project. If these files did not change from 1.0 to 2.0, then you shouldn't use them as key files.

    Ulrich

    Comment


    • #3
      Originally posted by Ulrich View Post
      VisualPatch.CheckFolderVersion() will return the name of the tab containing the files which were detected in the target folder. If the function is returning "2.0", then these files which you are using as key files, in that specific folder, have the same MD5 checksum as the ones you placed in your "2.0" tab in the project. If these files did not change from 1.0 to 2.0, then you shouldn't use them as key files.

      Ulrich
      Ulrich,
      Thanks for your reply. I had added a "/bin" in the end of "FolderPath" (taken from %AppFolder%). This was added because i had difficulty in locating the key file inside the 'bin' folder. After taking that off, things seems to be working fine. But, if i add any new files as part of v2.0, that is not getting added as part of the update. No errors though, just the new file won't get copied to the target location.

      Comment


      • #4
        You may need to check your build and patch log files. If you added these files and they exist in both versions, then your patch will contain only the differences (if any). If for some reason the file from the first version does not exist on the target computer, Visual Patch cannot generate the full file - after all, it has stored only the differences. In such a case, you will see that a file could not be found and was skipped - check the patch log.

        If you need to deploy the file, if a previous version existed or not on the target system, you need to check the "Force install" option in the file's Properties dialog. This will mean that the whole file, not just the difference, will be stored in the patch. Of course, if the file did not exist in the first version, it also will be included in full. In this case, in the build log you will find the mention that the file is included because no previous version exists.

        Ulrich

        Comment


        • #5
          Originally posted by Ulrich View Post
          You may need to check your build and patch log files. If you added these files and they exist in both versions, then your patch will contain only the differences (if any). If for some reason the file from the first version does not exist on the target computer, Visual Patch cannot generate the full file - after all, it has stored only the differences. In such a case, you will see that a file could not be found and was skipped - check the patch log.

          If you need to deploy the file, if a previous version existed or not on the target system, you need to check the "Force install" option in the file's Properties dialog. This will mean that the whole file, not just the difference, will be stored in the patch. Of course, if the file did not exist in the first version, it also will be included in full. In this case, in the build log you will find the mention that the file is included because no previous version exists.

          Ulrich
          Ulrich,
          Here is my current status. My 1.0 version does not have "abc.dll" and i want to add "abc.dll" to my 2.0. So basically "abc.dll" is not present in my "1.0" tab, but is present in the "2.0" tab. I also have "Force Install" option enabled for this file. The build fails with the following error

          Force install setting enabled
          Error 3210: Could not make copy of target file: 1
          and this error in the end of log file

          Creating diff files
          Error 3210: Could not make copy of target file: 1
          If i remove the "Force Install" option, the build seems to be completing fine.

          Comment


          • #6
            Ulrich,
            I have found a temporary workaround for this issue and i am posting it here for the benefit of other users. All i did was to change the relative source paths to absolute paths. One is a specific dll file and another is a folder copy (using "*.*" as the file name). Remember that i have other folders which gets copied fine using the relative path.
            Even though the problem is temporarily solved, i would like to use the relative paths. It would be great if you have any suggestions about this.

            Thanks,
            James

            Comment


            • #7
              If your version 1.0 does not use the file, but it is included in version 2.0, then the full file should be included automatically, and no "Force Install" is required.
              Regarding the error message, please make sure that you have no on-access anti-virus running in the background, which could be blocking Visual Patch from reaching this *.dll file, causing this failure.

              Ulrich

              Comment

              Working...
              X