-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstaller.nsi
More file actions
102 lines (81 loc) · 5.27 KB
/
installer.nsi
File metadata and controls
102 lines (81 loc) · 5.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
; NSIS Script for Desktop Grouping
; Generated by じぇみにちゃん! (๑>◡<๑)
; UTF-8 with BOMじゃないとだめだよ
;--------------------------------
; 基本情報
;--------------------------------
!define APP_NAME "Desktop Grouping"
!define APP_VERSION "3.0.0" ; Cargo.toml のバージョンと合わせるとGood!
!define APP_PUBLISHER "weizlogy"
!define APP_EXE "desktop_grouping.exe"
!define APP_UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}"
; 生成されるインストーラーのファイル名
; .nsi ファイルからの相対パスで target\release に出力するよ!
OutFile "target\release\${APP_NAME}_${APP_VERSION}_installer.exe"
; デフォルトのインストール先 (Program Files)
InstallDir "$PROGRAMFILES64\${APP_NAME}"
; 32bit Windows も考慮するなら InstallDir "$PROGRAMFILES\${APP_NAME}" もあり
; インストーラーの見た目とか
RequestExecutionLevel admin ; 管理者権限を要求するよ (Program Files に入れるなら必要)
InstallDirRegKey HKCU "${APP_UNINSTALL_KEY}" "InstallLocation"
;--------------------------------
; インターフェース設定 (表示するページ)
;--------------------------------
Page directory ; インストール先を選んでもらうページだよ!٩( 'ω' )و
Page components ; インストールする機能を選んでもらうページを追加!ദ്ദി ˃ ᵕ ˂ )
Page instfiles ; インストール実行中のページ
UninstPage uninstConfirm ; アンインストール確認ページ
UninstPage instfiles ; アンインストール実行中のページ
;--------------------------------
; インストール処理本体
;--------------------------------
; Section "必須コンポーネント" SEC_CORE ; ← SectionIn RO を使うなら名前は表示されないよ
Section "必須コンポーネント" SEC_CORE ; ← /o をつけると非表示セクションになるよ!
; インストール先ディレクトリを作るよ
SetOutPath $INSTDIR
; ここにアプリ本体のファイルをコピーする指示を書くよ!
; target\release にビルドした実行ファイルを指定してね!
; スクリプトファイル(${__FILEDIR__})がある場所からの相対パスで指定するよ! これで確実!( •̀ᄇ• ́)ﻭ✧
File "${__FILEDIR__}\target\release\${APP_EXE}"
; --- アンインストーラー情報の書き込み ---
WriteRegStr HKLM "${APP_UNINSTALL_KEY}" "DisplayName" "${APP_NAME}"
WriteRegStr HKLM "${APP_UNINSTALL_KEY}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "${APP_UNINSTALL_KEY}" "DisplayIcon" "$INSTDIR\${APP_EXE}"
WriteRegStr HKLM "${APP_UNINSTALL_KEY}" "DisplayVersion" "${APP_VERSION}"
WriteRegStr HKLM "${APP_UNINSTALL_KEY}" "Publisher" "${APP_PUBLISHER}"
WriteRegDWORD HKLM "${APP_UNINSTALL_KEY}" "NoModify" 1
WriteRegDWORD HKLM "${APP_UNINSTALL_KEY}" "NoRepair" 1
WriteUninstaller "$INSTDIR\uninstall.exe" ; アンインストーラー実行ファイルを作るよ
; このセクションは必ずインストールされるようにするよ!
SectionIn RO ; ReadOnlyで必須項目にするのだ!( •̀ω•́ )✧
SectionEnd
; オプションのセクションを追加! (o^-')b
Section "スタートアップに登録する" SEC_STARTUP
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${APP_NAME}" '"$INSTDIR\${APP_EXE}"' ; パスにスペースが入るかもだから "" で囲むと安心だよ
SectionEnd
;--------------------------------
; アンインストール処理
;--------------------------------
; アンインストールのメイン処理
Section "Uninstall" ; デフォルトで表示されるアンインストールセクション名だよ
; --- ファイル削除 ---
; インストール時に登録した場合、解除も忘れずに!
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${APP_NAME}"
; --- ファイル削除 ---
Delete "$INSTDIR\${APP_EXE}"
; 他にインストールしたファイルがあれば削除
; Delete "$INSTDIR\README.md"
; Delete "$INSTDIR\LICENSE"
Delete "$INSTDIR\uninstall.exe" ; アンインストーラー自身も削除
; --- ディレクトリ削除 ---
RMDir "$INSTDIR" ; 空なら削除されるよ
; --- レジストリ削除 ---
DeleteRegKey HKLM "${APP_UNINSTALL_KEY}"
; アンインストール時にも、スタートアップ登録を解除する処理を対応するセクションに入れるよ
; Section "un.スタートアップ登録解除" など、アンインストール用のセクションを作ることもできるけど、
; 今回はシンプルに Uninstall セクションに含めちゃおう!(๑•̀ㅂ•́)و✧
; もしスタートアップ登録がオプションじゃなかったら、ここに書くのが普通だよ。
; オプションにした場合は、インストール時に SEC_STARTUP が選択されたかどうかを
; レジストリとかに記録しておいて、アンインストール時にそれをチェックして削除する…
; っていうのが丁寧だけど、今回はシンプルに毎回削除トライしちゃえ!(ノ≧ڡ≦)☆
SectionEnd