Giter Site home page Giter Site logo

portableregistrator's Introduction

PORTABLE Registrator

for Windows 7, 8, 10 (untested 11)

Also got into trouble using your favorite browser or mail program on a pendrive? Then this one is for you!

Easily register any portable app as a default program in Windows. This will allow you to directly open weblinks (http/https URLs) with the portable browser of your choice.

image

Configuration

Default

On the first start a configuration file is being generated to provide default settings for the AppTypes.

The default available AppType are:

<?xml version="1.0"?>
<Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <AppTypes>
    <AppType>
      <Name>Web-Browser</Name>
      <OpenParameters>-url "%1"</OpenParameters>
      <FileAssociations>
        <string>.htm</string>
        <string>.html</string>
        <string>.shtml</string>
        <string>.xht</string>
        <string>.xhtml</string>
      </FileAssociations>
      <URLAssociations>
        <string>http</string>
        <string>https</string>
        <string>ftp</string>
      </URLAssociations>
    </AppType>
    <AppType>
      <Name>Mail-Program</Name>
      <OpenParameters>"%1"</OpenParameters>
      <FileAssociations>
        <string>.xpi</string>
        <string>.eml</string>
        <string>.msg</string>
        <string>.ics</string>
        <string>.mbox</string>
      </FileAssociations>
      <URLAssociations>
        <string>mailto</string>
      </URLAssociations>
    </AppType>
  </AppTypes>
</Configuration>

To be as flexible as possible, you can extend any kind of application within the configuration file. For any app specific needs, other than browser or mail, try adding a new "AppType" section there.

Example

<?xml version="1.0"?>
<Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <AppTypes>
  
    ... (other AppType elements)
    
    <AppType>
      <Name>Image-Viewer</Name>                           <--- 1.
      <OpenParameters>-parameter "%1"</OpenParameters>    <--- 2. 
      <FileAssociations>
        <string>.jpg</string>                             <--- 3.
        <string>.gif</string>
        <string>...</string>
      </FileAssociations>
      <URLAssociations>
        <string>view</string>                             <--- 4.
      </URLAssociations>
    </AppType>
    
  </AppTypes>
</Configuration>

Steps

  1. Name the new AppType
  2. Set the supported open parameter of the program (%1 passes the parameter to the portable executable)
  3. Register all file associations
  4. Register all URL associations, if not needed remove the lines inbetween

At best copy a full AppType section and edit it to your needs.

Possibly not every software will work, but give it a shot and share your experience.

You can use the ADD Button to easily add new Program-Types. After manual editing the Reset-Button will now also reloads the Configuration file and repopulate the Program-Types.

CLI-SUPPORT:

AppTypes can be printed out from the existing configuration file, by simply giving a string to search for a AppType's name.

Check PortableRegistratorCLI.exe /? for more info.

Have fun and enjoy.

CONTRIBUTION:

Please post your custom configs for implementing more standard apps under issues, so I can add them to the repo. Thank you, guys.

CREDITS:

App Icon:

https://iconarchive.com/show/3d-bluefx-desktop-icons-by-wallpaperfx/Usb-icon.html Backlink: http://www.wallpaperfx.com

Inspired by:

https://www.winhelponline.com/blog/register-firefox-portable-with-default-programs-in-vista/

German tutorial by DeskModder.de: (Thank you!)

https://www.deskmodder.de/blog/2022/04/01/portable-registrator-portable-browser-mail-oder-andere-programme-als-standard-setzen-koennen

portableregistrator's People

Contributors

lwcorp avatar sil3nc3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

portableregistrator's Issues

My PortableRegistrator.conf

Web-Browser -url "%1" .htm .html .shtml .xht .xhtml http https ftp Mail-Program "%1" .xpi .eml .msg .ics .mbox mailto KMPlayerPortable "%1" .avi .mkv .mp4 .mov m3u8 mp4 mov TelegramPortable_x64 "%1" .xpi FSViewer -parameter "%1" .jpg .gif .bmp .png .ico view WINRAR "%1″ .7zip .zip .rar .gz .cab view

Change layout

What do you think about interchanging the location of "Program Type" and "Portable executable"?
I think it will be more convenient
Sorry I don't know how to compile so I couldn't test it so the location might be off

namespace PortableRegistrator
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.label1 = new System.Windows.Forms.Label();
            this.btnRegister = new System.Windows.Forms.Button();
            this.btnSelectExe = new System.Windows.Forms.Button();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.tbxProgramName = new System.Windows.Forms.TextBox();
            this.label6 = new System.Windows.Forms.Label();
            this.cbRegisteredPortables = new System.Windows.Forms.ComboBox();
            this.label5 = new System.Windows.Forms.Label();
            this.panel1 = new System.Windows.Forms.Panel();
            this.btnUnregister = new System.Windows.Forms.Button();
            this.label9 = new System.Windows.Forms.Label();
            this.label7 = new System.Windows.Forms.Label();
            this.label8 = new System.Windows.Forms.Label();
            this.tbxPortablePath = new System.Windows.Forms.TextBox();
            this.cbProgramType = new System.Windows.Forms.ComboBox();
            this.lblFileAssociations = new System.Windows.Forms.Label();
            this.label11 = new System.Windows.Forms.Label();
            this.label12 = new System.Windows.Forms.Label();
            this.lblURLAssociations = new System.Windows.Forms.Label();
            this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
            this.btnConfig = new System.Windows.Forms.Button();
            this.button1 = new System.Windows.Forms.Button();
            this.label4 = new System.Windows.Forms.Label();
            this.label10 = new System.Windows.Forms.Label();
            this.lblPropertiesParameter = new System.Windows.Forms.Label();
            this.lblOpenParameters = new System.Windows.Forms.Label();
            this.panel2 = new System.Windows.Forms.Panel();
            this.panel3 = new System.Windows.Forms.Panel();
            this.llGithub = new System.Windows.Forms.LinkLabel();
            this.label13 = new System.Windows.Forms.Label();
            this.label14 = new System.Windows.Forms.Label();
            this.panel4 = new System.Windows.Forms.Panel();
            this.panel5 = new System.Windows.Forms.Panel();
            this.panel6 = new System.Windows.Forms.Panel();
            this.pictureBox1 = new System.Windows.Forms.PictureBox();
            this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
            this.panel1.SuspendLayout();
            this.panel2.SuspendLayout();
            this.panel3.SuspendLayout();
            this.panel4.SuspendLayout();
            this.panel6.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(13, 57);
            this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(110, 21);
            this.label1.TabIndex = 5;
            this.label1.Text = "Program Type:";
            //
			// label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(13, 240);
            this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(147, 21);
            this.label2.TabIndex = 2;
            this.label2.Text = "Portable executable:";
            // 
            // btnRegister
            // 
            this.btnRegister.Location = new System.Drawing.Point(578, 244);
            this.btnRegister.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
            this.btnRegister.Name = "btnRegister";
            this.btnRegister.Size = new System.Drawing.Size(124, 34);
            this.btnRegister.TabIndex = 9;
            this.btnRegister.Text = "REGISTER";
            this.btnRegister.UseVisualStyleBackColor = true;
            this.btnRegister.Click += new System.EventHandler(this.btnRegister_Click);
            // 
            // btnSelectExe
            // 
            this.btnSelectExe.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btnSelectExe.Location = new System.Drawing.Point(676, 57);
            this.btnSelectExe.Name = "btnSelectExe";
            this.btnSelectExe.Size = new System.Drawing.Size(25, 25);
            this.btnSelectExe.TabIndex = 4;
            this.btnSelectExe.Text = "...";
            this.btnSelectExe.UseVisualStyleBackColor = true;
            this.btnSelectExe.Click += new System.EventHandler(this.btnSelectExe_Click);
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(16, 250);
            this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(120, 21);
            this.label3.TabIndex = 7;
            this.label3.Text = "Program Name:";
            // 
            // tbxProgramName
            // 
            this.tbxProgramName.Font = new System.Drawing.Font("Segoe UI", 12F);
            this.tbxProgramName.Location = new System.Drawing.Point(173, 247);
            this.tbxProgramName.Margin = new System.Windows.Forms.Padding(2);
            this.tbxProgramName.Name = "tbxProgramName";
            this.tbxProgramName.Size = new System.Drawing.Size(204, 29);
            this.tbxProgramName.TabIndex = 8;
            this.tbxProgramName.TextChanged += new System.EventHandler(this.tbxProgramName_TextChanged);
            // 
            // label6
            // 
            this.label6.AutoSize = true;
            this.label6.Location = new System.Drawing.Point(386, 250);
            this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label6.Name = "label6";
            this.label6.Size = new System.Drawing.Size(73, 21);
            this.label6.TabIndex = 14;
            this.label6.Text = "Portable\"";
            // 
            // cbRegisteredPortables
            // 
            this.cbRegisteredPortables.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.cbRegisteredPortables.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cbRegisteredPortables.Font = new System.Drawing.Font("Segoe UI", 12F);
            this.cbRegisteredPortables.FormattingEnabled = true;
            this.cbRegisteredPortables.Location = new System.Drawing.Point(175, 71);
            this.cbRegisteredPortables.Name = "cbRegisteredPortables";
            this.cbRegisteredPortables.Size = new System.Drawing.Size(392, 29);
            this.cbRegisteredPortables.TabIndex = 10;
            this.cbRegisteredPortables.SelectedIndexChanged += new System.EventHandler(this.cbRegisteredPortables_SelectedIndexChanged);
            // 
            // label5
            // 
            this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
            this.label5.AutoSize = true;
            this.label5.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
            this.label5.Location = new System.Drawing.Point(13, 75);
            this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label5.Name = "label5";
            this.label5.Size = new System.Drawing.Size(155, 21);
            this.label5.TabIndex = 16;
            this.label5.Text = "Registered Portables:";
            // 
            // panel1
            // 
            this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
            this.panel1.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
            this.panel1.Controls.Add(this.btnUnregister);
            this.panel1.Controls.Add(this.label9);
            this.panel1.Controls.Add(this.cbRegisteredPortables);
            this.panel1.Controls.Add(this.label5);
            this.panel1.Location = new System.Drawing.Point(0, 362);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(713, 128);
            this.panel1.TabIndex = 17;
            // 
            // btnUnregister
            // 
            this.btnUnregister.Location = new System.Drawing.Point(578, 68);
            this.btnUnregister.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
            this.btnUnregister.Name = "btnUnregister";
            this.btnUnregister.Size = new System.Drawing.Size(124, 34);
            this.btnUnregister.TabIndex = 34;
            this.btnUnregister.Text = "UNREGISTER";
            this.btnUnregister.UseVisualStyleBackColor = true;
            this.btnUnregister.Click += new System.EventHandler(this.btnUnregister_Click);
            // 
            // label9
            // 
            this.label9.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
            this.label9.AutoSize = true;
            this.label9.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
            this.label9.Font = new System.Drawing.Font("Segoe UI", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label9.Location = new System.Drawing.Point(168, 23);
            this.label9.Name = "label9";
            this.label9.Size = new System.Drawing.Size(252, 30);
            this.label9.TabIndex = 20;
            this.label9.Text = "Unregister portable App";
            this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // label7
            // 
            this.label7.AutoSize = true;
            this.label7.Location = new System.Drawing.Point(160, 249);
            this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label7.Name = "label7";
            this.label7.Size = new System.Drawing.Size(16, 21);
            this.label7.TabIndex = 18;
            this.label7.Text = "\"";
            // 
            // label8
            // 
            this.label8.AutoSize = true;
            this.label8.Font = new System.Drawing.Font("Segoe UI", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label8.Location = new System.Drawing.Point(170, 10);
            this.label8.Name = "label8";
            this.label8.Size = new System.Drawing.Size(289, 30);
            this.label8.TabIndex = 0;
            this.label8.Text = "Register a new portable app";
            this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // tbxPortablePath
            // 
            this.tbxPortablePath.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.tbxPortablePath.Location = new System.Drawing.Point(175, 57);
            this.tbxPortablePath.Margin = new System.Windows.Forms.Padding(2);
            this.tbxPortablePath.Name = "tbxPortablePath";
            this.tbxPortablePath.ReadOnly = true;
            this.tbxPortablePath.Size = new System.Drawing.Size(496, 25);
            this.tbxPortablePath.TabIndex = 3;
            this.tbxPortablePath.TextChanged += new System.EventHandler(this.tbxPortablePath_TextChanged);
            // 
            // cbProgramType
            // 
            this.cbProgramType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cbProgramType.FormattingEnabled = true;
            this.cbProgramType.Location = new System.Drawing.Point(175, 99);
            this.cbProgramType.Name = "cbProgramType";
            this.cbProgramType.Size = new System.Drawing.Size(202, 29);
            this.cbProgramType.TabIndex = 6;
            this.cbProgramType.SelectedIndexChanged += new System.EventHandler(this.cbProgramType_SelectedIndexChanged);
            // 
            // lblFileAssociations
            // 
            this.lblFileAssociations.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblFileAssociations.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
            this.lblFileAssociations.Location = new System.Drawing.Point(327, 137);
            this.lblFileAssociations.Name = "lblFileAssociations";
            this.lblFileAssociations.Size = new System.Drawing.Size(373, 17);
            this.lblFileAssociations.TabIndex = 23;
            this.lblFileAssociations.Text = "lblFileAssociations";
            this.lblFileAssociations.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // label11
            // 
            this.label11.AutoSize = true;
            this.label11.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label11.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
            this.label11.Location = new System.Drawing.Point(187, 137);
            this.label11.Name = "label11";
            this.label11.Size = new System.Drawing.Size(102, 17);
            this.label11.TabIndex = 25;
            this.label11.Text = "FileAssociations:";
            this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // label12
            // 
            this.label12.AutoSize = true;
            this.label12.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label12.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
            this.label12.Location = new System.Drawing.Point(187, 161);
            this.label12.Name = "label12";
            this.label12.Size = new System.Drawing.Size(106, 17);
            this.label12.TabIndex = 26;
            this.label12.Text = "URLAssociations:";
            this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // lblURLAssociations
            // 
            this.lblURLAssociations.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblURLAssociations.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
            this.lblURLAssociations.Location = new System.Drawing.Point(327, 161);
            this.lblURLAssociations.Name = "lblURLAssociations";
            this.lblURLAssociations.Size = new System.Drawing.Size(373, 17);
            this.lblURLAssociations.TabIndex = 27;
            this.lblURLAssociations.Text = "lblURLAssociations";
            this.lblURLAssociations.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // openFileDialog1
            // 
            this.openFileDialog1.Filter = "exe files (*.exe)|*.exe";
            // 
            // btnConfig
            // 
            this.btnConfig.Location = new System.Drawing.Point(623, 13);
            this.btnConfig.Name = "btnConfig";
            this.btnConfig.Size = new System.Drawing.Size(79, 34);
            this.btnConfig.TabIndex = 28;
            this.btnConfig.Text = "CONFIG";
            this.toolTip1.SetToolTip(this.btnConfig, "Program Types setup");
            this.btnConfig.UseVisualStyleBackColor = true;
            this.btnConfig.Click += new System.EventHandler(this.btnConfig_Click);
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(538, 13);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(79, 34);
            this.button1.TabIndex = 29;
            this.button1.Text = "RESET";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.btnReset_Click);
            // 
            // label4
            // 
            this.label4.AutoSize = true;
            this.label4.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label4.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
            this.label4.Location = new System.Drawing.Point(187, 185);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(103, 17);
            this.label4.TabIndex = 30;
            this.label4.Text = "OpenParameter:";
            this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // label10
            // 
            this.label10.AutoSize = true;
            this.label10.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label10.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
            this.label10.Location = new System.Drawing.Point(187, 209);
            this.label10.Name = "label10";
            this.label10.Size = new System.Drawing.Size(131, 17);
            this.label10.TabIndex = 31;
            this.label10.Text = "PropertiesParameter:";
            this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // lblPropertiesParameter
            // 
            this.lblPropertiesParameter.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblPropertiesParameter.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
            this.lblPropertiesParameter.Location = new System.Drawing.Point(327, 209);
            this.lblPropertiesParameter.Name = "lblPropertiesParameter";
            this.lblPropertiesParameter.Size = new System.Drawing.Size(373, 17);
            this.lblPropertiesParameter.TabIndex = 32;
            this.lblPropertiesParameter.Text = "lblPropertiesParameter";
            this.lblPropertiesParameter.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // lblOpenParameters
            // 
            this.lblOpenParameters.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblOpenParameters.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
            this.lblOpenParameters.Location = new System.Drawing.Point(327, 185);
            this.lblOpenParameters.Name = "lblOpenParameters";
            this.lblOpenParameters.Size = new System.Drawing.Size(373, 17);
            this.lblOpenParameters.TabIndex = 33;
            this.lblOpenParameters.Text = "lblOpenParameters";
            this.lblOpenParameters.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // panel2
            // 
            this.panel2.Controls.Add(this.label8);
            this.panel2.Controls.Add(this.lblOpenParameters);
            this.panel2.Controls.Add(this.label6);
            this.panel2.Controls.Add(this.lblPropertiesParameter);
            this.panel2.Controls.Add(this.label1);
            this.panel2.Controls.Add(this.label10);
            this.panel2.Controls.Add(this.btnRegister);
            this.panel2.Controls.Add(this.label4);
            this.panel2.Controls.Add(this.btnSelectExe);
            this.panel2.Controls.Add(this.label2);
            this.panel2.Controls.Add(this.label3);
            this.panel2.Controls.Add(this.lblURLAssociations);
            this.panel2.Controls.Add(this.tbxPortablePath);
            this.panel2.Controls.Add(this.label12);
            this.panel2.Controls.Add(this.label11);
            this.panel2.Controls.Add(this.tbxProgramName);
            this.panel2.Controls.Add(this.lblFileAssociations);
            this.panel2.Controls.Add(this.cbProgramType);
            this.panel2.Controls.Add(this.label7);
            this.panel2.Location = new System.Drawing.Point(0, 72);
            this.panel2.Name = "panel2";
            this.panel2.Size = new System.Drawing.Size(713, 292);
            this.panel2.TabIndex = 34;
            // 
            // panel3
            // 
            this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
            this.panel3.Controls.Add(this.llGithub);
            this.panel3.Controls.Add(this.label13);
            this.panel3.Location = new System.Drawing.Point(0, 491);
            this.panel3.Name = "panel3";
            this.panel3.Size = new System.Drawing.Size(713, 45);
            this.panel3.TabIndex = 35;
            // 
            // llGithub
            // 
            this.llGithub.AutoSize = true;
            this.llGithub.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.llGithub.Location = new System.Drawing.Point(543, 13);
            this.llGithub.Name = "llGithub";
            this.llGithub.Size = new System.Drawing.Size(74, 17);
            this.llGithub.TabIndex = 0;
            this.llGithub.TabStop = true;
            this.llGithub.Text = "Github.com";
            this.llGithub.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            this.llGithub.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llGithub_LinkClicked);
            // 
            // label13
            // 
            this.label13.AutoSize = true;
            this.label13.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label13.Location = new System.Drawing.Point(97, 13);
            this.label13.Name = "label13";
            this.label13.Size = new System.Drawing.Size(452, 17);
            this.label13.TabIndex = 1;
            this.label13.Text = "Made with 💙 for Portable Software - Source code and release available at \r\n";
            // 
            // label14
            // 
            this.label14.AutoSize = true;
            this.label14.Font = new System.Drawing.Font("Segoe UI", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label14.Location = new System.Drawing.Point(170, 13);
            this.label14.Name = "label14";
            this.label14.Size = new System.Drawing.Size(263, 30);
            this.label14.TabIndex = 34;
            this.label14.Text = "PORTABLE REGISTRATOR";
            this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // panel4
            // 
            this.panel4.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
            this.panel4.Controls.Add(this.label14);
            this.panel4.Controls.Add(this.btnConfig);
            this.panel4.Controls.Add(this.button1);
            this.panel4.Location = new System.Drawing.Point(0, -1);
            this.panel4.Name = "panel4";
            this.panel4.Size = new System.Drawing.Size(713, 60);
            this.panel4.TabIndex = 36;
            // 
            // panel5
            // 
            this.panel5.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
            this.panel5.Location = new System.Drawing.Point(0, 57);
            this.panel5.Name = "panel5";
            this.panel5.Size = new System.Drawing.Size(713, 14);
            this.panel5.TabIndex = 37;
            // 
            // panel6
            // 
            this.panel6.Anchor = System.Windows.Forms.AnchorStyles.None;
            this.panel6.Controls.Add(this.pictureBox1);
            this.panel6.Location = new System.Drawing.Point(0, -1);
            this.panel6.Name = "panel6";
            this.panel6.Padding = new System.Windows.Forms.Padding(10);
            this.panel6.Size = new System.Drawing.Size(160, 127);
            this.panel6.TabIndex = 38;
            // 
            // pictureBox1
            // 
            this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.pictureBox1.Image = global::PortableRegistrator.Properties.Resources.Wallpaperfx_3d_Bluefx_Desktop_Usb;
            this.pictureBox1.Location = new System.Drawing.Point(10, 10);
            this.pictureBox1.Name = "pictureBox1";
            this.pictureBox1.Padding = new System.Windows.Forms.Padding(5);
            this.pictureBox1.Size = new System.Drawing.Size(140, 107);
            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
            this.pictureBox1.TabIndex = 38;
            this.pictureBox1.TabStop = false;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 21F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(714, 537);
            this.Controls.Add(this.panel6);
            this.Controls.Add(this.panel5);
            this.Controls.Add(this.panel3);
            this.Controls.Add(this.panel1);
            this.Controls.Add(this.panel2);
            this.Controls.Add(this.panel4);
            this.DoubleBuffered = true;
            this.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
            this.MaximizeBox = false;
            this.Name = "Form1";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "PORTABLE Registrator";
            this.panel1.ResumeLayout(false);
            this.panel1.PerformLayout();
            this.panel2.ResumeLayout(false);
            this.panel2.PerformLayout();
            this.panel3.ResumeLayout(false);
            this.panel3.PerformLayout();
            this.panel4.ResumeLayout(false);
            this.panel4.PerformLayout();
            this.panel6.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
            this.ResumeLayout(false);

        }

        #endregion
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Button btnRegister;
        private System.Windows.Forms.Button btnSelectExe;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.TextBox tbxProgramName;
        private System.Windows.Forms.Label label6;
        private System.Windows.Forms.ComboBox cbRegisteredPortables;
        private System.Windows.Forms.Label label5;
        private System.Windows.Forms.Panel panel1;
        private System.Windows.Forms.Label label7;
        private System.Windows.Forms.Label label8;
        private System.Windows.Forms.Label label9;
        private System.Windows.Forms.TextBox tbxPortablePath;
        private System.Windows.Forms.ComboBox cbProgramType;
        private System.Windows.Forms.Label lblFileAssociations;
        private System.Windows.Forms.Label label11;
        private System.Windows.Forms.Label label12;
        private System.Windows.Forms.Label lblURLAssociations;
        private System.Windows.Forms.OpenFileDialog openFileDialog1;
        private System.Windows.Forms.Button btnConfig;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.Label label10;
        private System.Windows.Forms.Label lblPropertiesParameter;
        private System.Windows.Forms.Label lblOpenParameters;
        private System.Windows.Forms.Panel panel3;
        private System.Windows.Forms.Panel panel2;
        private System.Windows.Forms.LinkLabel llGithub;
        private System.Windows.Forms.Label label13;
        private System.Windows.Forms.Button btnUnregister;
        private System.Windows.Forms.Label label14;
        private System.Windows.Forms.Panel panel4;
        private System.Windows.Forms.Panel panel5;
        private System.Windows.Forms.Panel panel6;
        private System.Windows.Forms.PictureBox pictureBox1;
        private System.Windows.Forms.ToolTip toolTip1;
    }
}

Please mention that you still need to set the app as Windows default app in your documentation

We had a user who had problems with registering Betterbird. He was missing the step to set the app as Windows default app which is mentioned here:
https://www.deskmodder.de/blog/2023/04/24/portable-registrator-portable-browser-mail-oder-andere-programme-als-standard-setzen-koennen/
Startet man jetzt die Einstellungen -> Apps -> Standard-Apps, erscheint der Chrome Launcher Portable in der Liste der Apps. Hier kann man jetzt den portablen Browser als Standard setzen.
Translated: If you now start Settings -> Apps -> Default apps, the Chrome Launcher Portable appears in the list of apps. Here you can now set the portable browser as the default.

We're also mentioning this on our support page now: https://www.betterbird.eu/support/
As of January 2023 in version 102.7.1-bb29 the launcher program can be registered as default mail application using, for example, PortableRegistrator. Once registered, the launcher program must be selected as default mail app in Windows, see screenshot here. When registered, mailto: links will open in the portable Betterbird.

setting floorp as default web browser is not working

Hi folks, the scenario here is that I have this portable browser, that firefox fork floorp which I am trying to make default on my windows 10 machine but I was unsuccessful it would not even work for local html docs.

I tried running the program as admin to no avail. The program shows as registered but nothing seems to be changed. At least from a practical point of view.

Detected as malware

3 out of 64 in VirusTotal may not be a lot, but it's still bigger than 1...would you considering checking why it happens, and if it's unavoidable report false positives to those specific vendors?
image

So to be on the safe side, I've tried running it through Sandboxie...and it crashed it. Very few and quite complex programs do that:
image

VLC Portable

Would be best that in the next release of the program, the word "Portable" would be dropped from the name. I mean if someone choses to name their program Portable should be their choice, should not be enforced. I understand why "Portable" was added to the name, as some people might also have the regular program installed. But yet again, if people already use this tool they should have a basic understanding of what they are doing. For me, personally, I only have portable programs and when using this tool I see all the time XXXX Portable and XXXX Portable File Type and I need to edit the registry myself, which is becoming a bit of a nuisance.

image

image

Adding my own config for VLC:
VLC.txt

<?xml version="1.0"?> <Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <AppTypes> <AppType> <Name>VLC</Name> <OpenParameters>"%1"</OpenParameters> <FileAssociations> <string>.3ga</string> <string>.669</string> <string>.a52</string> <string>.aac</string> <string>.ac3</string> <string>.adt</string> <string>.adts</string> <string>.aif</string> <string>.aifc</string> <string>.aiff</string> <string>.au</string> <string>.amr</string> <string>.aob</string> <string>.ape</string> <string>.caf</string> <string>.cda</string> <string>.dts</string> <string>.flac</string> <string>.it</string> <string>.m4a</string> <string>.m4p</string> <string>.mid</string> <string>.mka</string> <string>.mlp</string> <string>.mod</string> <string>.mp1</string> <string>.mp2</string> <string>.mp3</string> <string>.mpc</string> <string>.mpga</string> <string>.oga</string> <string>.oma</string> <string>.opus</string> <string>.qcp</string> <string>.ra</string> <string>.rmi</string> <string>.snd</string> <string>.s3m</string> <string>.spx</string> <string>.tta</string> <string>.voc</string> <string>.vqf</string> <string>.w64</string> <string>.wav</string> <string>.wma</string> <string>.wv</string> <string>.xa</string> <string>.xm</string> <string>.3g2</string> <string>.3gp</string> <string>.3gp2</string> <string>.3gpp</string> <string>.amv</string> <string>.asf</string> <string>.avi</string> <string>.bik</string> <string>.divx</string> <string>.drc</string> <string>.dv</string> <string>.f4v</string> <string>.flv</string> <string>.gvi</string> <string>.gxf</string> <string>.m1v</string> <string>.m2t</string> <string>.m2v</string> <string>.m2ts</string> <string>.m4v</string> <string>.mkv</string> <string>.mov</string> <string>.mp2v</string> <string>.mp4</string> <string>.mp4v</string> <string>.mpa</string> <string>.mpe</string> <string>.mpeg</string> <string>.mpeg1</string> <string>.mpeg2</string> <string>.mpeg4</string> <string>.mpg</string> <string>.mpv2</string> <string>.mts</string> <string>.mtv</string> <string>.mxf</string> <string>.nsv</string> <string>.nuv</string> <string>.ogg</string> <string>.ogm</string> <string>.ogx</string> <string>.ogv</string> <string>.rec</string> <string>.rm</string> <string>.rmvb</string> <string>.rpl</string> <string>.thp</string> <string>.tod</string> <string>.ts</string> <string>.tts</string> <string>.vob</string> <string>.vro</string> <string>.webm</string> <string>.wmv</string> <string>.xesc</string> <string>.asx</string> <string>.b4s</string> <string>.cue</string> <string>.ifo</string> <string>.m3u</string> <string>.m3u8</string> <string>.pls</string> <string>.ram</string> <string>.sdp</string> <string>.vlc</string> <string>.wvx</string> <string>.xspf</string> </FileAssociations> </AppType> </AppTypes> </Configuration>

Backing up and restoring settings

This is not an issue but a query. Are all Portable Registrator settings saved in the Registry only? If so, I was wondering if I can export the registry keys so I can import them back after a clean install instead of running the app and registering all my apps again. I do a clean install often and this can help automating the process. Thanks

Add support for more types of portable apps

Great app is this. Thank you.

I'd like to see support for image viewers, media players, pdf readers/editors, office suites, mind mapping, etc. Such as:
• IrfanView
• PotPlayer
• SumatraPDF
• foobar2000
• notepad++
• qBittorrent
• SimpleMind

IrfanView Image File Formats

GitHub wouldn't let me attach the text file.

In case you'd like to add this:

<AppType>
  <Name>IrfanView Image-Viewer</Name>
  <OpenParameters>"%1"</OpenParameters>
  <FileAssociations>
    <string>.3fr</string>
    <string>.acr</string>
    <string>.ani</string>
    <string>.arw</string>
    <string>.b3d</string>
    <string>.bmp</string>
    <string>.cam</string>
    <string>.cdr</string>
    <string>.cgm</string>
    <string>.cin</string>
    <string>.clp</string>
    <string>.cmx</string>
    <string>.cr2</string>
    <string>.cr3</string>
    <string>.crw</string>
    <string>.cur</string>
    <string>.dcm</string>
    <string>.dcr</string>
    <string>.dcx</string>
    <string>.dds</string>
    <string>.dib</string>
    <string>.djvu</string>
    <string>.dng</string>
    <string>.dpx</string>
    <string>.dwg</string>
    <string>.dxf</string>
    <string>.ecw</string>
    <string>.emf</string>
    <string>.erf</string>
    <string>.exr</string>
    <string>.fits</string>
    <string>.flc</string>
    <string>.fli</string>
    <string>.flif</string>
    <string>.fpx</string>
    <string>.g3</string>
    <string>.gif</string>
    <string>.hdp</string>
    <string>.heic</string>
    <string>.hpgl</string>
    <string>.icl</string>
    <string>.ico</string>
    <string>.ics</string>
    <string>.ids</string>
    <string>.iff</string>
    <string>.img</string>
    <string>.iw44</string>
    <string>.j2k</string>
    <string>.jfif</string>
    <string>.jls</string>
    <string>.jng</string>
    <string>.jp2</string>
    <string>.jpc</string>
    <string>.jpe</string>
    <string>.jpeg</string>
    <string>.jpf</string>
    <string>.jpg</string>
    <string>.jpm</string>
    <string>.jxl</string>
    <string>.jxr</string>
    <string>.lbm</string>
    <string>.mng</string>
    <string>.mos</string>
    <string>.mpo</string>
    <string>.mrsid</string>
    <string>.mrw</string>
    <string>.nef</string>
    <string>.nrw</string>
    <string>.orf</string>
    <string>.pbm</string>
    <string>.pcd</string>
    <string>.pcx</string>
    <string>.pdn</string>
    <string>.pef</string>
    <string>.pgm</string>
    <string>.plt</string>
    <string>.png</string>
    <string>.ppm</string>
    <string>.psb</string>
    <string>.psd</string>
    <string>.psp</string>
    <string>.pspimage</string>
    <string>.qoi</string>
    <string>.raf</string>
    <string>.ras</string>
    <string>.raw</string>
    <string>.rgb</string>
    <string>.rle</string>
    <string>.rw2</string>
    <string>.rwl</string>
    <string>.sid</string>
    <string>.sff</string>
    <string>.sfw</string>
    <string>.sgi</string>
    <string>.srf</string>
    <string>.srw</string>
    <string>.sun</string>
    <string>.svg</string>
    <string>.tga</string>
    <string>.tif</string>
    <string>.tiff</string>
    <string>.wad</string>
    <string>.wbc</string>
    <string>.wbmp</string>
    <string>.wbz</string>
    <string>.wdp</string>
    <string>.webp</string>
    <string>.wmf</string>
    <string>.wsq</string>
    <string>.x3f</string>
    <string>.xbm</string>
    <string>.xcf</string>
    <string>.xpm</string>
  </FileAssociations>
  <URLAssociations>
    <string>view</string>
  </URLAssociations>
</AppType>

PR starts portabe Firefox but empty...

I found that PR works, but in the Firefox window all adjustments, bookmarks and passwords are missing.
I'm Connecting with "FirefoxPortable.exe".
Can you give me instructions or is it a bug?

Regards,
Wolfgang

Beautify file type description in Windows

After registering an app, I see the description as Appname + TYPE

Can this be improved to show Appname + File, so it looks more natural in windows. Or a config property for user to give description with each extension would be helpful.

image

Can you add a silent mode?

I was just gonna use this for a single app, it would be nice if I could skip using the GUI and automatically assign all registered extensions for a given AppType, you could define a "Silent Mode" in the configuration file perhaps? I just want something I can double click on and have it do all the work, like the app I made to configure video player settings. Originally I was gonna do this with a batch file like this: assoc .mkv=PotPlayerPortable.MKV&&ftype PotPlayerPortable.MKV="PotPlayerPortable.exe" "%1" but assoc and ftype don't support relative paths.

Possible Missing Font

I have circled 2 items on the app that have what may be a font issue. I believe I don't the font that is being used for the "Delete" button and the Made with "Heart" symbol at the bottom.
PortableRegistrar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.