|
1 | | -use std::{fs, io, ptr, thread}; |
| 1 | +use std::{env, fs, io, ptr, thread}; |
2 | 2 | use std::cell::Cell; |
3 | 3 | use std::collections::HashMap; |
| 4 | +use std::env::current_exe; |
4 | 5 | use std::fs::File; |
5 | 6 | use std::io::{BufRead, BufReader, Read, Seek, SeekFrom}; |
6 | 7 | use std::process::{Command, exit}; |
@@ -609,8 +610,25 @@ fn play_audio() { |
609 | 610 | stream_handle.play_raw(source.convert_samples()).unwrap(); |
610 | 611 | } |
611 | 612 |
|
| 613 | +fn print_end() { |
| 614 | + println!("== 공지 =="); |
| 615 | + println!("드디어 2023년 10월 1일부로 리퍼 스토어가 문을 닫았습니다."); |
| 616 | + println!("이제 이 프로그램은 더이상 사용되지 않으며, 이 문구 이후 이 프로그램은 더이상 실행되지 않습니다."); |
| 617 | + println!("하지만 이것으로 리핑이 끝은 아닙니다."); |
| 618 | + println!("여전히 개인 PC로 아바타를 뜯는 툴이 돌아다니고 있으며, 추후에 이러한 툴을 감지하는 툴의 원리를 알아낸다면 나중에라도 이 프로그램이 다시 살아날 수 있습니다."); |
| 619 | + println!("그럼 행복한 아바타 제작을 하시길 바랍니다!"); |
| 620 | + println!(); |
| 621 | + |
| 622 | + let itself = std::env::current_exe().unwrap(); |
| 623 | + let parent = itself.parent().unwrap(); |
| 624 | + self_replace::self_delete_outside_path(&parent).unwrap(); |
| 625 | + fs::remove_dir_all(&parent).unwrap(); |
| 626 | +} |
| 627 | + |
612 | 628 | fn main() -> Result<(), Box<dyn std::error::Error>> { |
613 | 629 | print_author(); |
| 630 | + print_end(); |
| 631 | + |
614 | 632 | auto_update().expect("업데이트 확인 오류"); |
615 | 633 |
|
616 | 634 | fs::create_dir_all(config_dir().unwrap().join("VRCX/Anti-Ripper")).expect("폴더 생성 오류"); |
|
0 commit comments