はじめに
昨今セキュリティが厳しくなり、企業によっては自分の端末であっても管理者権限を与えられず、ソフトウェアをインストールするのに逐一システム部門等の許可が必要、という会社もあると聞く。
このため今回、フリーのインストーラであるNSISを使って、管理者権限がなくてもインストールできるインストーラを作成する方法を調べてみた。
環境
OS Windows 10
NSNS 3.04
方法
やり方は超簡単。インストールスクリプトに以下一文を入れるだけ。
RequestExecutionLevel user
サンプル
以下サンプルでやってみよう。スクリプトをNSISでコンパイルして、Install.exeを作成してみよう。(File のところは自分がインストールしたいファイルに読み替えてほしい)
Name "ChemSyo"
OutFile "Install.exe"
InstallDir "$PROGRAMFILES\ChemSyo"
Page directory
Page instfiles
RequestExecutionLevel user
Section
SetOutPath "$INSTDIR\python"
File "C:\jagariko\work\SoftwareDevelop\NSIS\program\python\bin\DeepLearningKeras.py"
File "C:\jagariko\work\SoftwareDevelop\NSIS\program\python\bin\GenerateImage.py"
WriteUninstaller "$INSTDIR\Uninstall.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSISSample" "DisplayName" "ChemSyo"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSISSample" "UninstallString" '"$INSTDIR\Uninstall.exe"'
SectionEnd
Section "Uninstall"
Delete "$INSTDIR\Uninstall.exe"
Delete "$INSTDIR\python\DeepLearningKeras.py"
Delete "$INSTDIR\python\GenerateImage.py"
RMDir "$INSTDIR\python"
RMDir "$INSTDIR"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSISSample"
SectionEnd
実行
まずRequestExecutionLevel user
をつけずに作成したインストーラを用いて、一般ユーザでインストールしようとすると、管理者権限のパスワードを入力するように促される。
次にRequestExecutionLevel user
をつけたインストーラを使った場合は、何も聞かれずにインストールが始まる。インストール先に管理者権限の必要なフォルダを指定すると、以下のようにアクセス権限のも問題でエラーとなるが(これは正しい動作だ)、管理者権限が不要なフォルダを選択すると、全く問題なくインストールすることができるのだ。
おわりに
今回紹介した技を使うと、企業管理者の目を盗んで自由にインストールできるソフトウェアを作成し、配布することができる。
おっと、依存するOSSなどがある場合、それらも管理者権限がなくてもインストールできるかどうか調べておくことを忘れずに。