Skip to content

Instantly share code, notes, and snippets.

@santaklouse
Last active April 18, 2025 15:30
Show Gist options
  • Save santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef to your computer and use it in GitHub Desktop.
Save santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef to your computer and use it in GitHub Desktop.
unlimited CrossOver trial (MacOS)

Run it in console for permanent install :

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.'
@FewJuho
Copy link

FewJuho commented Apr 8, 2025

@Nygosaki Hey, looks like they have changed folders paths or the whole system idk

➜ Documents bash -c "$(curl -fsSL https://raw.githubusercontent.com/Nygosaki/crossover-trial-renew/refs/heads/main/resetCrossoverTrial.sh)"

No CrossOver processes found.
FirstRunDate not found in plist file. Deletion successful.
grep: /Users/*****/Library/Application Support/CrossOver/Bottles/*/system.reg: No such file or directory
Bottle trial reset successful.

@Nygosaki
Copy link

Nygosaki commented Apr 9, 2025

@FewJuho hm... could you check the paths I mentioned in my prior message? If you still have access to cross over, could you click the "open C drive" button in one of your bottles and tell me the path of one of the files in there (right click, get info)?

@Nygosaki
Copy link

Nygosaki commented Apr 9, 2025

Actually, I might see the issue. @FewJuho just to verify, could you send a screenshot of the output?

@VictorSu000
Copy link

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.

@FewJuho
Copy link

FewJuho commented Apr 10, 2025

Actually, I might see the issue. @FewJuho just to verify, could you send a screenshot of the output?

image

@Nygosaki
Btw I grepped for "Bottles" and there is nothing associated with CrossOver anymore

@supahfox
Copy link

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

@Nygosaki
Copy link

Nygosaki commented Apr 11, 2025

@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.

@Thisisme222
Copy link

are both of you on linux? The script was made with the macos version in mind.
If you are using macos, please try using terminal instead.

am on macos, can confirm this happens. after running the script, crossover does not open. Notification below appears.
Screenshot 2025-04-11 at 9 12 16 PM

@FewJuho
Copy link

FewJuho commented Apr 12, 2025

Nygosaki

iam on macos sequoia rn using Iterm2, maybe paths depends on CrossOver version? (25.0.0)

@supahfox
Copy link

@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

@Nygosaki
Copy link

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.

@casvanluijtelaar
Copy link

casvanluijtelaar commented Apr 15, 2025

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)

@PrenSJ2
Copy link

PrenSJ2 commented Apr 15, 2025

I am on macos 15.4

all i did:

  1. give full disk access to iTerm (Terminal)
  2. brew install pidof
  3. sudo bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/install.sh)"

bosh 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment