質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

11380閲覧

UAC対策としてmsiのインストール先をC:\Users\ユーザー名\AppData\Local\会社名\アプリ名\に変更したい。

oribe

総合スコア17

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

2クリップ

投稿2019/01/23 02:32

前提・実現したいこと

UAC対策としてmsiのインストール先を
・C:\Users\ユーザー名\AppData\Local\会社名\アプリ名
に変更したい。

内製ソフトの保守・改修を行っています。

UAC対策が全く行われておらず、exeにシールド(盾)マークが付いているために標準ユーザーが起動するたびに管理者昇格を求められています。

そこで、UAC対策の一環としてインストール先を現状の
・C:\Program File(x86)
から、ユーザーごとにインストールすべく
・C:\Users\ユーザー名\AppData\Local\会社名\アプリ名
に変更したいと考えています。

インストーラー内でユーザーを識別し、(動的に)インストール先を取得・表示したいと考えています。

イメージ説明

インストーラー作成に関する
・Windows Installer技術
・InstallScript技術
・MSIX技術
などの利用で実現可能でしょうか?

msi形式にはこだわっていません。
ヒントや回答など、みなさまの知識やお知恵をお借りしたく。
よろしくお願いします。

試したこと

以下を参考に試したところ、
・C:\Users\ユーザー名\AppData\Local\Programs\会社名\アプリ名
とProgramsフォルダーがワンクッション入ってしまいます。

https://tsmatz.wordpress.com/2009/06/24/rds-windows-installer-5-0/

また、batファイルやVBSを使って試作したのでスマートではありません。

補足情報(FW/ツールのバージョンなど)

・windows10
・Visual Studio 2017
・.NET Framework 4.7.2
・Windows Forms
・VB.NET

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2019/01/23 02:45

インストールした後では起動には必ずしも管理者権限は必要がありません(<インストール時のみ必要)が、インストールからすべて、標準ユーザーでまかないたい、と言うことでしょうか。
oribe

2019/01/23 02:58

はい。 管理者昇格することなく、インストール、起動共に標準ユーザーでまかないたいと考えています。 ごく簡単なWindows Formsアプリ(新規ファイル出力含む)を試作し、シールド(盾)マークが付かないexeの作成まではできております。(←インストール、起動共に管理者昇格せずに実行できております) インストーラーを起動したユーザーを動的に識別し、それに合わせてフォルダーのpath(ユーザー名含む)を表示したいと考えております。
guest

回答1

0

ベストアンサー

Microsoft Visual Studio Installer Projectsを使われているならば、単純に、Application Folder(他のフォルダーを追加しているならそちら)のDefalutLocationプロパティの[ProgramFilesFolder]部分を[LocalAppDataFolder]に変えるのではだめですか?
イメージ説明

投稿2019/01/23 05:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oribe

2019/01/23 06:18

lazybones2000さん、ありがとうございました。 教えていただいた方法で無事に解決できました。 ちなみに、これは世界の常識ですか? ご存知の方からすると極めて初歩的な設定だと感じました。 私は3年ほど前から、初めてWindows、.NET Framework環境で作業しており、恥ずかしながら「UAC対策」もつい先日知った次第です。 とにかく助かりました。ありがとうございました。
退会済みユーザー

退会済みユーザー

2019/01/23 06:37

デフォルト値が[ProgramFilesFolder]だったので、ProgramFiles環境変数と連動しているかもと思い、LocalAppData環境変数に要望されるフォルダーが保持されているので置き換えてみたらうまくいった次第です。 BAいただいた後に恐縮ですが、世界の常識なのかは未確認ですし、これを当たり前に使っていいのかも未確認です。環境変数としてはProgramFilesもLocalAppDataも、(期待通り環境変数連動のマクロ?ならば)たぶん大丈夫ではないでしょうか。 なお、末尾のFolderは何だという疑問は深く考えないことにしました;
backyard

2019/01/23 06:48

横から割り込みすみません。 WindowsNTとかの頃にInstallShieldなどといったインストーラー専用の開発ツールでいろいろやってました。インストーラーの開発、設定作業においては、Windowsが取り扱う「よく使うフォルダ」は何かしらの名前がついていて、その名前で指定すればそのときのユーザーや環境、環境変数に応じたパスなどに置き換えてくれる、というのはある程度よくある知識です。 ただ、最近はWebアプリが多いこともあり、インストーラーなどで凝ったことをする場面も少ないように思うので、そのあたりのノウハウはそんなに広まっては居ない、というのはあると思います。
退会済みユーザー

退会済みユーザー

2019/01/23 07:42

補足ありがとうございます。 プログラム開発関連の知識は、遥か昔の学生の頃に独学していたあたりから時間が止まっていたに近いので、こういったコメントを見られるのはありがたいことです。
oribe

2019/01/23 07:51 編集

lazybones2000さん、backyardさん .NET Frameworkの変遷と開発に携わった方々の苦労や工夫をググりながら調査・作業している私にとって、お二人のご回答やコメントなどはリアルに響いてきます。それだけでも感謝いたします。 以下を参照したところ、LocalAppDataFolderを設定するのが正解だと思いました。 http://blogs.wankuma.com/tocchann/archive/2010/09/16/193019.aspx 一人で保守・改修を行っておりますので、とても心強く感じました。 teratail御中、lazybones2000さん、backyardさん、この度は誠にありがとうございました。
dodox86

2019/01/23 08:41

「このデータのときはこのフォルダー」と言うのは指針があって、SHGetKnownFolderPath APIで取得できるものです。フォルダーの種別はこちらを。https://docs.microsoft.com/ja-jp/windows/desktop/shell/knownfolderid また、WiX (Windows Installer XML toolset)に関するドキュメントをみると、インストーラー周りの情報を得られやすくなります。
oribe

2019/01/24 02:27

dodox86さん 情報の提供とアドバイス、誠にありがとうございます! フォルダー種別に関しましては、早速読まさせていただきまいした。 また、WiXに関しましてもこれを機にチェックし、目を通しておこうと思います。 質問への確認を含め、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問