bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/install.sh?token=$(date +%s))"
After install script will fix crossover as well as expired bottles (Thanks to @djsmax).
#!/usr/bin/env bash | |
# checck if pidof exists | |
PIDOF="$(which pidof)" | |
# and if not - install it | |
(test "${PIDOF}" && test -f "${PIDOF}") || brew install pidof | |
# find app in default paths | |
CO_PWD=~/Applications/CrossOver.app/Contents/MacOS | |
test -d "${CO_PWD}" || CO_PWD=/Applications/CrossOver.app/Contents/MacOS | |
test -d "${CO_PWD}" || (echo 'unable to detect app path. exiting...' && exit) | |
PWD="${CO_PWD}" | |
cd "${PWD}" | |
PROC_NAME='CrossOver' | |
# get all pids of CrossOver | |
pids=(`pgrep "${PROC_NAME}"`, `pidof "${PROC_NAME}"`, `ps -Ac | grep -m1 "${PROC_NAME}" | awk '{print $1}'`) | |
pids=`echo ${pids[*]}|tr ',' ' '` | |
# kills CrossOver process if it is running | |
[ "${pids}" ] && kill -9 `echo "${pids}"` > /dev/null 2>&1 | |
# wait until app finish | |
sleep 3 | |
# make the current date RFC3339-encoded string representation in UTC time zone | |
DATETIME=`date -u -v -3H '+%Y-%m-%dT%TZ'` | |
# modify time in order to reset trial | |
plutil -replace FirstRunDate -date "${DATETIME}" ~/Library/Preferences/com.codeweavers.CrossOver.plist | |
plutil -replace SULastCheckTime -date "${DATETIME}" ~/Library/Preferences/com.codeweavers.CrossOver.plist | |
# show tooltip notification | |
/usr/bin/osascript -e "display notification \"trial fixed: date changed to ${DATETIME}\"" | |
# reset all bottles | |
for file in ~/Library/Application\ Support/CrossOver/Bottles/*/.{eval,update-timestamp}; do rm -rf "${file}";done | |
# and after this execute original crossover | |
echo "${PWD}" > /tmp/co_log.log | |
"$($PWD/CrossOver.origin)" >> /tmp/co_log.log |
#!/usr/bin/env bash | |
# find app in default paths | |
CO_PWD=~/Applications/CrossOver.app/Contents/MacOS | |
test -d "${CO_PWD}" || CO_PWD=/Applications/CrossOver.app/Contents/MacOS | |
test -d "${CO_PWD}" || (echo 'unable to detect app path. exiting...' && exit) | |
PWD="${CO_PWD}" | |
cd "${PWD}" | |
PROC_NAME='CrossOver' | |
# get all pids of CrossOver | |
pids=(`pgrep "${PROC_NAME}"`, `pidof "${PROC_NAME}"`, `ps -Ac | grep -m1 "${PROC_NAME}" | awk '{print $1}'`) | |
pids=`echo ${pids[*]}|tr ',' ' '` | |
# kills CrossOver process if it is running | |
[ "${pids}" ] && kill -9 `echo "${pids}"` > /dev/null 2>&1 | |
TIMESTAMP=$(date +%s) | |
FIX_FILE_LINK="https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/CrossOver.sh?token=${TIMESTAMP}" | |
if [ -f CrossOver.origin ]; then | |
echo 'already installed. update and exit.' | |
echo "$(curl -fsSL ${FIX_FILE_LINK})" > CrossOver | |
exit | |
fi; | |
test -f CrossOver.origin || mv CrossOver CrossOver.origin | |
echo "$(curl -fsSL ${FIX_FILE_LINK})" > CrossOver | |
chmod +x CrossOver | |
echo 'Done. Please open CrossOver ' |
#!/usr/bin/env bash | |
# find app in default paths | |
CO_PWD=~/Applications/CrossOver.app/Contents/MacOS | |
test -d "${CO_PWD}" || CO_PWD=/Applications/CrossOver.app/Contents/MacOS | |
test -d "${CO_PWD}" || (echo 'unable to detect app path. exiting...' && exit) | |
PWD="${CO_PWD}" | |
cd "${PWD}" | |
PROC_NAME='CrossOver' | |
# get all pids of CrossOver | |
pids=(`pgrep "${PROC_NAME}"`, `pidof "${PROC_NAME}"`, `ps -Ac | grep -m1 "${PROC_NAME}" | awk '{print $1}'`) | |
pids=`echo ${pids[*]}|tr ',' ' '` | |
# kills CrossOver process if it is running | |
[ "${pids}" ] && kill -9 `echo "${pids}"` > /dev/null 2>&1 | |
if [ -f CrossOver.origin ]; then | |
echo 'original file found. Roll it back and exit.' | |
mv CrossOver.origin CrossOver | |
exit | |
fi; | |
echo 'original file not found.' |
I'm using CrossOver 25.0.0.38553. I had created some bottles for test but now I already deleted all bottles. I didn't install the script, but just ran [CrossOver.sh] to modify plist file and reset bottles. However each time I started CrossOver, the FirstRunDate in plist file would be reverted and CrossOver said the trial has x remaining days (x is exactly the right number). It seems like CrossOver records the FirstRunDate somewhere else and reverts the plist file in its startup. Any idea to fix this? Thanks so much.
just follow the instructions here https://github.com/Nygosaki/crossover-trial-renew
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Nygosaki/crossover-trial-renew/refs/heads/main/resetCrossoverTrial.sh)"
bottles are not resseted, and there is no additional instructions in your gist
Seconding this issue
@FewJuho @supahfox are both of you on linux?
The script was made with the macos version in mind. If you could open the C: drive of a bottle, navigate from there to base crossover directory, and then dump the entire folder into a zip and upload it here I can modify it to work on linux.
If you are using macos, please try using terminal instead.
iam on macos sequoia rn using Iterm2, maybe paths depends on CrossOver version? (25.0.0)
@FewJuho @supahfox are both of you on linux? The script was made with the macos version in mind. If you could open the C: drive of a bottle, navigate from there to base crossover directory, and then dump the entire folder into a zip and upload it here I can modify it to work on linux. If you are using macos, please try using terminal instead.
macos sequoia 15.4
I see. Considering I've had crossover since way before 25, I am thinking that my paths might be outdated. I am currently on vacation, once I return I'll reinstall it and check things out.
works in combination with https://github.com/Ghost420-over/crackover/blob/main/Reset_Crossover_bottles.command to update the bottles system.reg file. (had to modify both scripts to suite my setup)
I am on macos 15.4
all i did:
brew install pidof
sudo bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/install.sh)"
bosh 👍
@FewJuho @supahfox are both of you on linux? The script was made with the macos version in mind. If you could open the C: drive of a bottle, navigate from there to base crossover directory, and then dump the entire folder into a zip and upload it here I can modify it to work on linux. If you are using macos, please try using terminal instead.
I am on Linux and I have to use Crossover to work with Word to type papers on physics for one specific journal.
a warning to anyone who tries - crossover no longer starts after running this. I get to reinstall everything now, thanks.
I am on macos 15.4
all i did:
- give full disk access to iTerm (Terminal)
brew install pidof
sudo bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/install.sh)"
bosh 👍
Does this actually work? And if so can you give a full runthrough starting with installing Crossover etc
I am on macos 15.4
all i did:
- give full disk access to iTerm (Terminal)
brew install pidof
sudo bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/install.sh)"
bosh 👍
My crossover now no longer starts after doing this
I am on macos 15.4
all i did:
- give full disk access to iTerm (Terminal)
brew install pidof
sudo bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/install.sh)"
bosh 👍
My crossover now no longer starts after doing this
I just came across this too, and had to run the uninstall script: https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef#file-uninstall-sh
which seemed to also reset the trial, I guess I am just gonna create a zsh alias to run the uninstall and install scripts, then just run them every 14 days. kinda buggy but whatever
I am on macos 15.4
all i did:
- give full disk access to iTerm (Terminal)
brew install pidof
sudo bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/install.sh)"
bosh 👍
My crossover now no longer starts after doing this
I just came across this too, and had to run the uninstall script: https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef#file-uninstall-sh which seemed to also reset the trial, I guess I am just gonna create a zsh alias to run the uninstall and install scripts, then just run them every 14 days. kinda buggy but whatever
yh it went back to normal after running the uninstall script and reset to 14 days so i guess I just gotta do that every 13 days
CrossOver.sh script just killed my crossover app, it doesn't open anymore........
CrossOver.sh script just killed my crossover app, it doesn't open anymore........
Yh you just run the uninstall script and it will fix it. Just run this
bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/uninstall.sh)"
I ended up just paying the year, as i kept having to tediously uninstall then install .....
I'm waiting for the Cyber Monday deal to buy CrossOver. As a student who only uses Windows apps every once in a few months, CrossOver's regular pricing is too much for me to justify.
@aSushiLegend the reason why it works for you, I think, is because Santaklouse's script generated a "backup" crossover.app file, which this script restored. I assume you ran his script before whatever update patched resetting our resetting the trial method, and your crossover got rolled back to that version.
I'd be really happy if you proved me wrong, as I've explored all of crossover's directories looking for where it could be taking its initial run date from, and found absolutely nothing. Not even full uninstalls, whether that's codewaver's uninstall script or a uninstall utility app have worked. The only thing remaining is to actually just reverse engineer the app.
If your .app is truly still vulnerable, could you upload it here?
This guide will walk you through resetting both the CrossOver trial period and bottle settings on your Mac. Follow these steps carefully to fix the current issue assuming you have installed OP's original script.
Access the preferences file:
com.codeweavers.CrossOver.plist
Edit the preferences file:
FirstRunDate
key#!/bin/bash
REGFILE="$HOME/Library/Application Support/CrossOver/Bottles/Steam/system.reg"
BAKFILE="$REGFILE.bak"
FINDSTR="\[Software\\\\\\\\CodeWeavers\\\\\\\\CrossOver\\\\\\\\cxoffice\] [0-9]*"
cp "$REGFILE" "$BAKFILE"
echo "Backup created: $BAKFILE"
MATCHLN=$(grep -n "$FINDSTR" "$REGFILE" | cut -d: -f1)
if [ -n "$MATCHLN" ]; then
echo "Match found at line $MATCHLN."
sed -n "${MATCHLN},$(($MATCHLN + 4))p" "$REGFILE"
read -p "Do you want to delete these lines? (y/n): " RESP
if [ "$RESP" == "y" ]; then
awk -v line="$MATCHLN" 'NR >= line && NR <= line + 4 {next} {print}' "$REGFILE" > temp && mv temp "$REGFILE"
echo "Lines deleted."
else
echo "Deletion canceled."
fi
else
echo "No match found."
fi
reset_crossover.sh
to your desktop or home folderModify the script (if needed):
Make the script executable:
cd ~/Desktop # If you saved it on desktop
chmod +x reset_crossover.sh
Run the script:
./reset_crossover.sh
y
and press Enter to confirm deletioncodeweavers.com
www.codeweavers.com
Test the reset:
Regular maintenance:
If CrossOver still shows the trial as expired:
Check bottle configuration:
Additional preference files:
rm -rf ~/Library/Caches/com.codeweavers.CrossOver
Complete reinstall:
I don't know how its with others, but xcode & plutil (via bash) changes get reverted while prefs editor's stick, and I have no clue why.
I was also looking around with wireshark and crossover still doesn't check the trial period with any external servers. Still trying to figure out whats actually going on.
Edit: According to Thomas Tempelmann, "Mac OS X 10.8 introduced a caching system for app preferences ("cfprefsd"). While this probably increases performances for apps, it makes it harder for developers to manipulate preference values quickly for testing, because making changes directly to the plist files in the ~/Library/Preferences folder does not work any more with editors such as "Property List Editor.app" and the similar editor in Xcode. As of now (Dec 14, 2013), the only way to edit such preferences is by using the "defaults" command, which is rather difficult to use once it comes to editing dict or array entries."
I'll try testing the command to use it instead of plutil
@hackthegame101 Can confirm this works, tho editing the script to just automatically go through all Bottles and remove the lines in the registry automatically might be nice.
If someone could try this out on their device, I'd appreciate it
@aSushiLegend the reason why it works for you, I think, is because Santaklouse's script generated a "backup" crossover.app file, which this script restored. I assume you ran his script before whatever update patched resetting our resetting the trial method, and your crossover got rolled back to that version. I'd be really happy if you proved me wrong, as I've explored all of crossover's directories looking for where it could be taking its initial run date from, and found absolutely nothing. Not even full uninstalls, whether that's codewaver's uninstall script or a uninstall utility app have worked. The only thing remaining is to actually just reverse engineer the app. If your .app is truly still vulnerable, could you upload it here?
Yh unless they dropped an update within the last 3 weeks I don't know but it works so long as I run the script in terminal and then run Crossover and the close crossover and run the uninstall script.
If someone could try this out on their device, I'd appreciate it
Works fine for me (25.0)
My old Crossover method broke and I tried the new one and it works fine for me
Script here — resets trial, bottle reset included (experimental).
Actually, I might see the issue. @FewJuho just to verify, could you send a screenshot of the output?