locked
ICE requires Photosynth to be installed BUT! Let's talk about codes -- SOLVED!!! RRS feed

  • General discussion

  • Simply I got frustrated so I grab my ninja tools and slash through some of ICE codes.

     

    So basically the problem until now is people keep getting these Message even if the Photosynth is already installed. What wen't wrong? Am not sure either so something has to be explained.

     

    going through the ICE codes gives me some hints.

    PublishPhotosynth() is the final method called once that "Publish to Web" button is pressed. So so inside that method, there are some prerequisites that ICE has to check and one of them, checking if Photosynth is installed. So here's the code:

    // ICE.MainWindow
    private void PublishPhotosynth()
    {
        if (this.DataModel.SelectedMotionModel != MotionModel.Rotation3D)
        {
            if (this.ShowMessageDialog("Photosynth can only display panoramas made using the \"rotating motion\" setting for camera motion. If you change the camera motion setting, ICE will have to align and composite the panorama again. After that, you will be able to publish to Photosynth.\n\nDo you want to switch to rotating motion?", "_Yes", "_No", null) == MessageDialogResult.Yes)
            {
                this.DataModel.SelectedMotionModel = MotionModel.Rotation3D;
            }
            return;
        }
        if (!NetworkInterface.GetIsNetworkAvailable())
        {
            this.ShowMessageDialog("Publishing to Photosynth requires an internet connection.\nPlease try again when connected.", "OK", null, null);
            return;
        }
        if (!PhotosynthHelper.IsPhotosynthInstalled)
        {
            if (this.ShowMessageDialog("Photosynth is not installed.\nDo you want to install it?", "_Yes", "_No", null) == MessageDialogResult.Yes)
            {
                Process.Start(PhotosynthHelper.PhotosynthInstallerLink);
            }
            return;
        }
        if (this.CheckDirtyOrientation(true))
        {
            if (this.DataModel.State != StitchEditState.Idle)
            {
                this.shouldPublishWhenStitchingCompletes = true;
                return;
            }
            this.ReallyPublishPhotosynth();
        }

    } 

    We are interested in this condition here:

        if (!PhotosynthHelper.IsPhotosynthInstalled)
        {
            if (this.ShowMessageDialog("Photosynth is not installed.\nDo you want to install it?", "_Yes", "_No", null) == MessageDialogResult.Yes)
            {
                Process.Start(PhotosynthHelper.PhotosynthInstallerLink);
            }
            return;
        }

    And this line: PhotosynthHelper.IsPhotosynthInstalled

    Walking further inside, we have this

    // ICE.PhotosynthInterop.PhotosynthHelper
    public static bool IsPhotosynthInstalled
    {
        get
        {
            return PhotosynthHelper.PhotosynthCollectionBuilderType !null;
        }
    }

    // and this

    // ICE.PhotosynthInterop.PhotosynthHelper
    private static Type PhotosynthCollectionBuilderType
    {
        get
        {
            return Type.GetTypeFromProgID("Photosynth.CollectionBuilder");
        }
    }

    Leads me to this registry key HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder and bam! hit me on my head with this message

    Photosynth.CollectionBuilder cannot be opened.

    An error is preventing this key from being opened.

    Details: Access is denied.

    Then I made a little problem solving by doing this:

    1. Open Permissions window and hit Advance button.

    2. And in Advance Security Settings window, I opened Owner tab

    3. Click on Administrator user (which is where I currently in and using) and click Apply button.

    4. Current owner field will change to Administrator (<your machine name>\Administrator). Then hit OK button

    5. And why msiserver user is added there? Let's just give a full control to that user.

    6. Then add lamelessly "Everyone" user then give a Full Control.

    Once that done. You can now open that key and it has a default value "Photosynth".

     

    So I tried running ICE again, dragged some images for stitching then hit "Publish to Web" button and .. still gave me the same message

    Photosynth is not installed.

    Do you want to install it?

    Yes .... No .....

     

    HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder

    Why PhotosynthHelper.PhotosynthCollectionBuilderType is returning null?


    :)

    Saturday, August 27, 2011 8:19 AM

All replies

  • OK ANOTHER UPDATE

    I installed in my Virtual Machine and found that it has some missing registry keys. Not sure why but publishing worked on my Virtual Machine.

    I'll try to fix my local and get with you guys

     

    hope I don't sound like a modder


    :)

    Saturday, August 27, 2011 9:07 AM
  • Something's really preventing my machine to get an access with that registry key but here's the entire registry key for Photosync found in HKCR

     

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder]

    @="Photosynth"

     

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder\CLSID]

    @="{66206EAC-FB06-442B-87B0-73B79F6D2864}"

     

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder\CurVer]

    @="Photosynth.CollectionBuilder.1"

    -------------------------------------------------------------------------------------

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder.1]

    @="Photosynth"

     

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder.1\CLSID]

    @="{66206EAC-FB06-442B-87B0-73B79F6D2864}"

     

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder.1\DefaultIcon]

    @="C:\\PROGRA~1\\PHOTOS~1\\PSWEBC~1.EXE,0"

     

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder.1\shell]

     

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder.1\shell\open]

     

    [HKEY_CLASSES_ROOT\Photosynth.CollectionBuilder.1\shell\open\command]

    @="C:\\PROGRA~1\\PHOTOS~1\\PSWEBC~1.EXE \"%1\""

    -------------------------------------------------------------------------------------

    [HKEY_CLASSES_ROOT\Photosynth.Photosynth]

    @="Photosynth Class"

     

    [HKEY_CLASSES_ROOT\Photosynth.Photosynth\CLSID]

    @="{8D2B8AEE-6F3E-41fe-9F33-53A399E2F180}"

     

    [HKEY_CLASSES_ROOT\Photosynth.Photosynth\CurVer]

    @="Photosynth.Photosynth.2"

    -------------------------------------------------------------------------------------

    [HKEY_CLASSES_ROOT\Photosynth.Photosynth.2]

    @="Photosynth Class"

     

    [HKEY_CLASSES_ROOT\Photosynth.Photosynth.2\CLSID]

    @="{8D2B8AEE-6F3E-41fe-9F33-53A399E2F180}"

     

    -------------------------------------------------------------------------------------

    If you're one of the people experience the same problem with the registry key (Access Denied in Photosynth.*) you may want to use this steps to manually install those keys. Make sure those CLSID exists too, if not .. TELL ME!!

    Goto these registry keys and do the following steps:

    Registry Keys:

    Photosynth.Collection

    Photosynth.CollectionBuilder.1

    Photosynth.Photosynth

    Photosynth.Photosynth.2

    Steps:

    1. Open Permissions window and hit Advance button.

    2. And in Advance Security Settings window, I opened Owner tab

    3. Click on Administrator user (which is where I currently in and using) and click Apply button.

    4. Current owner field will change to Administrator (<your machine name>\Administrator). Then hit OK button

    5. And why msiserver user is added there? Let's just give a full control to that user.

    6. Then add lamelessly "Everyone" user then give a Full Control.


    :)
    Saturday, August 27, 2011 9:20 AM
  • OK YOUR FINAL ANSWER IS HERE!!!!!!!!!!!!!!

    I have finally managed to make publishing work in ICE!!!

     

    Here's what I did: FOLLOW THE STEPS CORRECTLY!!

    1. Run REGEDIT using Administrator mode

    2. Open HKEY_CLASSES_ROOT and Look or Type Photosynth until you see Photosynth.CollectionBuilder key.

    3. If an error pop up denying your access to that key. Do this.

    -- 3.1 Right click and click Permissions... menu

    -- 3.2 Click Advanced button and it bring up Advance Security Settings window

    -- 3.3 Click Owner Tab

    -- 3.4 Click Administrators group in the list

    -- 3.5 Click Apply Button

    -- 3.6 Click Permissions Tab and click Add button and it will bring up "Select User or Group"

    -- 3.7 Click Advanced... button (wil bring up "Select User or Group" window) and click Find Now button and select Administrators group in Search results lists and click OK button.

    -- 3.8 Then it will ask you for Permissions that will be set to that Administrators group.

    -- 3.8 Check the checkbox in Full Control and it will automatically check all the checkboxes and click OK button.

    -- 3.9 Click OK button again in Advance Security Settings window.

    -- info: You will notice in Group or user names list already contains the Administrator group you added and the permission you set 

    4. Add new keys inside the Photosynth.CollectionBuilder:

    -- CLSID

    -- CurVer

    5. Open CLSID key and add this as the default REG_SZ value "{66206EAC-FB06-442B-87B0-73B79F6D2864}" (withouth the double quote)

    6. Open CurVer key and add this as the default REG_SZ value "Photosynth.CollectionBuilder.1"

     

    note:

    and do the same with these 3 keys. Refer to my Post #3 for additional keys and values

    -- Photosynth.CollectionBuilder.1

    -- Photosynth.Photosynth.2

    -- Photosynth.Photosynth

     

    GOOD LUCK :)

     

    The problem here really is not the ICE but the Photosynth installation version "PhotosynthInstall_21103171042"

     


    :)


    Saturday, August 27, 2011 9:40 AM
  • followed your instructions still does the same thing
    Tuesday, August 30, 2011 9:32 PM
  • followed your instructions still does the same thing

    @wiserg - Please follow what Eric asked in this thread first.

    I hope we could collaborate in live chat.


    :)
    Wednesday, August 31, 2011 2:49 AM