LoginSignup
0
0

More than 3 years have passed since last update.

NSISで管理者権限なしでインストールできるインストーラを作成する方法

Last updated at Posted at 2019-11-28

はじめに

昨今セキュリティが厳しくなり、企業によっては自分の端末であっても管理者権限を与えられず、ソフトウェアをインストールするのに逐一システム部門等の許可が必要、という会社もあると聞く。

このため今回、フリーのインストーラであるNSISを使って、管理者権限がなくてもインストールできるインストーラを作成する方法を調べてみた。

環境

OS Windows 10
NSNS 3.04

方法

やり方は超簡単。インストールスクリプトに以下一文を入れるだけ。

RequestExecutionLevel user

サンプル

以下サンプルでやってみよう。スクリプトをNSISでコンパイルして、Install.exeを作成してみよう。(File のところは自分がインストールしたいファイルに読み替えてほしい)

Install.nsi
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をつけたインストーラを使った場合は、何も聞かれずにインストールが始まる。インストール先に管理者権限の必要なフォルダを指定すると、以下のようにアクセス権限のも問題でエラーとなるが(これは正しい動作だ)、管理者権限が不要なフォルダを選択すると、全く問題なくインストールすることができるのだ。

image.png

おわりに

今回紹介した技を使うと、企業管理者の目を盗んで自由にインストールできるソフトウェアを作成し、配布することができる。
おっと、依存するOSSなどがある場合、それらも管理者権限がなくてもインストールできるかどうか調べておくことを忘れずに。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0