CasperUpdate
CasperUpdate is a system which allows creators to make self-updating products. Once a product is sold to the customer, the product will check for an update every time it is rezzed (or at specific intervals). If an update is found, the customer is asked if they wish to receive the update (which will be delivered to them).
Features
- Completely web networked and automated.
- No notecards to edit
- Unintrusive - unlike competing systems, CasperUpdate allows customers to suppress further update notifications.
- No-copy support - CasperUpdate can securely distribute updates for your no-copy products.
- Efficient - Just a single script powers our DropBox (Compared to HippoUpdate's 28 script server).
- Fast - Updates are delivered in a flash.
- Unlimited number of products supported - Not "almost" limitless, *actually* limitless.
- Any version format supported, including minor releases, code names and sub-versions.
- Full statistics and reporting of updates delivered, including CSV export.
- CasperVend integration - keep track of which products have been rezzed by the customer
- Communications fully encrypted with SSL
- A fully redundant, reliable network, as proven by the success of CasperVend itself
- Free updates for life
Rules
In order to ensure that the service remains available and fast for everyone to use, we have a few limits and rules in place.
- The system must ONLY be used for its intended purpose - to provide product updates.
- Using the API commands for any other purpose is prohibitied and is grounds for service suspension.
- Each object may only check for updates - at most - once per hour. Exceeding this limit temporarily (such as for testing purposes) is OK.
- The server "rate-limits" requests. Currently these limits are set high, but we reserve the right to lower these limits if the service is being abused.
Video Tutorial
This video runs about 10 minutes, so settle in and make sure you don't miss anything.
If you don't want to - or can't - view the video, the text instructions begin below this section.
VideoService "youtubehd" not recognized.
Account and Product Listing Setup
If you have already set up your products in CasperVend, please skip down to the section for Adding CasperUpdate to Your Products.
Set up your account
- Make sure you are on land where YOU can rez objects and run scripts. (Correct group tag, etc.)
- Rez the CasperUpdate shipping crate and click it to unpack. Do NOT open manually or your purchase will not properly register!
- Choose a suitable place inworld to leave your DropBox. This MUST STAY REZZED AT ALL TIMES so make sure it is someplace where it can stay long-term.
- Rez the DropBox. The DropBox will be named something like "CasperTech Dropbox ((version number))"
- Click the DropBox. This will bring up a popup menu.
- From the popup menu, select "Admin."
- This will show you a popup menu asking you to visit a URL. Click Go to URL.
- Once you have loaded the website, you may be asked to choose a password. Do this now. If you have previously created an account, you will be asked to enter your password and log in.
- If you don't remember your password, you will have a "forgot password" option as long as you arrived via a URL from inworld. (The inworld object acts as identity verification to the website.)
- Once successfully logged in, you should be presented with a page titled "Vendors", and you will see a few details about your DropBox.
Add Items to Your DropBox
- Switch back to Second Life, and right-click the dropbox that you rezzed out.
- Choose "Edit".
- Click the "Contents" tab in the edit floater. You should see a script with the name CasperTech DropBox".
- Choose the product(s) in your inventory that will be delivered to your customers when they claim an update.
- Drag them from your inventory to the DropBox contents window.
- Wait for the DropBox to upload information about the items to our servers.
- When finished, DropBox will show hovertext saying "Box is live" when this process is complete, along with the number of items it counts as valid (transferrable) items.
Add Product Listings
- If you have closed the website, touch the DropBox again and choose "Admin"
- Follow the link it gives you.
- Once the site is open and you've logged in (if necessary), choose "Products" from the website's left side menu. Repeat the following steps for each product that you wish to use with CasperUpdate.
- Click at the top of the page.
- Fill out the information about your product.
- Click "Save" at the bottom of the product page.
Adding CasperUpdate to Your Products
Repeat the following steps for each product that you wish to use with CasperUpdate.
Make sure you use the correct script! DO NOT drag the "CasperUpdate No-Copy Protector" script into your object yet! Using the wrong script may destroy your object! |
- Rez the product on the ground.
- Right click the product, go to "Edit", then switch to the "Contents" tab.
- Drag the "CasperUpdate vX.X" script into your object.
- Leave the object rezzed and continue with the following steps
Set Permissions
Make certain that you set the correct permissions for both your object and the script inside. Not doing so may result in people being able to obtain your products without paying. |
For products with COPY permissions
- Set "CasperUpdate vX.XX" script permissions to "No Modify" and No Transfer.
- Make sure your product object itself is set to "No Transfer".
For products with both COPY and TRANSFER permissions
- Set "CasperUpdate vX.XX" script permissions to "No Modify" and "No Transfer".
For products with NO COPY permissions
For objects with NO COPY permissions, you MUST set:
- Set "CasperUpdate vX.XX" script permissions to "No Modify".
- Set product object permissions to "No Modify" and "No Transfer".
Adding no-copy protection to no-copy products
Once you have finished editing the script (as described above), and you have confirmed that the script is running, and you have taken a backup copy of your object, then - and ONLY then! - drop the "CasperUpdate No-Copy Protector" script into your object.
DO NOT CHANGE PERMISSIONS FOR THIS SCRIPT - LEAVE THEM AS THEY ARE
Edit Script and Set Options
Inside each of the products, you should now have (at least) a "CasperUpdate v#.##" script. Double click the script in order to open the script editor window.
- Add your API key
On the website, click the "Overview" button around the top left of the page.
In the "API Configuration" box, you should see a line which reads "Full API Key".
Your full API key is a 40-character long code which will look something like this:
1ff379c6a13eb414877b8734781244dbb594e56d
Look for the following line: <lsl>string APIKey = "";</lsl>
You need to place your key between the " characters. So, in this case, it will end up look like this:
<lsl>string APIKey = "1ff379c6a13eb414877b8734781244dbb594e56d";</lsl> - Add your Product Update Key
You can find this key by going to the Products section on the website, clicking Edit next to the product you're currently working with, and scrolling down to "Update Key". Click the "Generate Key" button, and then copy the key into the script.
In my case,
<lsl>string ProductUpdateKey = "";</lsl>
becomes
<lsl>string ProductUpdateKey = "dd6ba159a09d3ceea613b5b7c80c01966557204b";</lsl>
- Set the version
The "Version" parameter should be set to the same version that you set on the product's entry in the website.
For example,
<lsl>string Version = "";</lsl>
might become
<lsl>string Version = "1.0 BETA";</lsl>
- Save the script
Click "Save" at the bottom of the script. After a few seconds, you should see "Save complete" at the bottom of the window. If you see something else, check that you have made the edits exactly as described above.
Final Checks
Once done, you should check that your settings are correct.
For objects with COPY permissions
- Your object should contain the "CasperUpdate v#.##" script, which should be set to "NO MODIFY", "COPY"
- If your object is no transfer, then the script should also be set to NO TRANSFER.
- The script should contain your API key, the Product Update Key, and the Version, and it should be saved and RUNNING (check the running tickbox at the bottom).
As an additional security feature, for all copiable products tracked through CasperVend only you may tick/check this additional option:
This will ensure that only the people who purchased your product will get the future updates.
As it shows in the picture, do NOT use this option if your product is transferrable, or if you normally sell through a medium that is NOT tracked by CasperVend.
For objects with NO COPY permissions
- Your object should contain the "CasperUpdate v#.##" script, which should be set to "NO MODIFY" and "NO COPY".
- The script should contain your API key, the Product Update Key, and the Version, and it should be saved and RUNNING (check the running tickbox at the bottom).
- Your object should be set to "NO MODIFY" and "NO COPY".
- Your object should contain the "CasperUpdate No-Copy Protector" script, which should be set to "NO MODIFY", "COPY", "TRANSFER".
Test!
We recommend that you send a copy of the product to a trusted friend or alt. If set up correctly, they SHOULD NOT receive any notices from the CasperUpdate script, UNTIL you update your product.
You may wish to follow the steps below to test the update process to make sure everything works.
Remember that CasperUpdate will check - by default - on rez, and once per hour for each copy of the product. Update sending will be triggered if the version identifier has changed in any way from what is in the script.
((inserting image shortly...))
Updating Your Products
- Remove the old item from your DropBox, and wait for it to update.
- Add the updated to your dropbox, and wait for it to update.
- Touch the DropBox, go to "Admin", and then follow the URL to take you to the website.
- Click "Products" on the left, and then click "edit" next to the product you are updating.
- Under "Item", you need to change the item to the new version (If the name hasn't changed, then leave as is.)
- Under "Version", give the product a new version.
- Save the product.
Sales Statistics
When a product is rezzed that contains the CasperUpdate script, the customer's purchase will turn green in your sales statistics:
In addition, any updates that are delivered will appear in your statistics with a notation for "Update" under the "Net" and "Received" columns. This can be seen in this example:
Emergency: Renew / Revoke the API keys
If all goes well, you should never need to use these options.
However, in case one or more products with the the CasperUpdate script accidentally gets out with the script in a visible (modifiable) manner, you have the ability to revoke either the update key associated with that product from the product listing (which will prevent auto-updates for any copies already purchased), or renew the global API key associated with your account from the OVERVIEW tab (which will prevent auto-updates for ANY of your products already purchased).
Using either of these renew/revoke options means that, at minimum, the next update you send out for your product(s) (or all products if you change the global API key) must be sent manually after you replace the key information in the CasperUpdate script.
All customers will be able to redeliver copiable products at any time by visiting a redelivery terminal, regardless of whether you've had to revoke or renew the API keys. |
FAQ / Troubleshooting
- Q. There's no popup message when rezzing a product with CasperUpdate!
- A1. Make sure the product on the website has a different version number than the number set in the script.
- A2. The script will only check for an update once per hour. If you're testing, then RESET the script, then re-rez the object.
- A3. If you still can't get it to work, temporarily change "integer Debug = FALSE" to "integer Debug = TRUE" in the script, in order to receive error messages, to make sure that your settings are correct.
- A1. Make sure the product on the website has a different version number than the number set in the script.
- Q. Will there ever be an update-on-touch option in CasperUpdate?
- A. If you can script, you can add it in yourself, but it will never be added by default.