This series of statements appears twice (with a typo on the 2nd occurrence), besides, it's difficult to understand.  I suggest extracting it as a function:
```python
def file_changed(filename, old_contents, mode='r'):
    if not os.path.exists(filename):
        return True
    with open(filename, mode) as f:
        return f.read() != old_contents
```
I also recommend fixing the race condition:
```python
def file_changed(filename, old_contents, mode='r'):
    try:
        with open(filename, mode) as f:
            return f.read() != old_contents
    except OSError as e:
        if e.errno == errno.ENOENT:
            return True
        else:
            raise
```

(The `mode` argument is because the win32_exe comparison needs `'rb'`, or things will happen unnecessarily.)